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 的无效值将继续正常工作。