验证Rails属性存在但允许空字符串

Jam*_*ush 6 ruby validation activerecord ruby-on-rails

我想验证字符串属性不是nil,但允许空字符串.

如:

validates name: not_nil, allow_empty: true
Run Code Online (Sandbox Code Playgroud)

Nul*_*uli 8

你也可以这样做:

validates :name, exclusion: { in: [nil] }
Run Code Online (Sandbox Code Playgroud)


Jam*_*ush 3

要允许空字符串,但在活动记录验证回调中拒绝 nil,请使用条件过程有条件地要求该属性存在(如果该属性不为 nil)。

所以代码看起来像:

validates :name, presence: true, if: proc { name.nil? }
Run Code Online (Sandbox Code Playgroud)

但您可能希望允许 null。那就不要验证了。仍然检查存在吗?在 nil 或空字符串的代码中。