Rails 验证:在使用包含验证器时摆脱 nil 的无效值消息,同时仍然阻止 nil 被保存
Rails validation: Get rid of the invalid value message for nil when using an inclusion validator while still preventing nil from being saved
对如下字段进行验证:
validates :entity_type, inclusion: { in: %w(1 2), message: "is invalid" }
如果用户在该字段中输入 nil,将返回的错误消息是
“can’t be blank”, ” is invalid”
如何更改此验证,以便在字段输入值为 nil 时仅返回“不能为空”?
在这种情况下,我们不希望 nil 成为有效值,只是为了清理验证消息。
我还没有在任何地方看到这方面的任何文档,所以想给出一个答案。
答案是将 allow_nil: true
与包含验证器一起使用。
validates :entity_type, inclusion: { in: %w(1 2), message: "is invalid" }, allow_nil: true
使用这意味着如果为该字段指定了 nil 值,验证器只会返回“不能为空”的消息,而非 nil 的无效值将继续正常工作。
对如下字段进行验证:validates :entity_type, inclusion: { in: %w(1 2), message: "is invalid" }
如果用户在该字段中输入 nil,将返回的错误消息是
“can’t be blank”, ” is invalid”
如何更改此验证,以便在字段输入值为 nil 时仅返回“不能为空”?
在这种情况下,我们不希望 nil 成为有效值,只是为了清理验证消息。
我还没有在任何地方看到这方面的任何文档,所以想给出一个答案。
答案是将 allow_nil: true
与包含验证器一起使用。
validates :entity_type, inclusion: { in: %w(1 2), message: "is invalid" }, allow_nil: true
使用这意味着如果为该字段指定了 nil 值,验证器只会返回“不能为空”的消息,而非 nil 的无效值将继续正常工作。