我正在尝试编写一个允许任何字符串但不允许 nil 的活动记录验证。
validates_presences_of 的问题是它对于我想认为有效的“”或“”返回 false。
我也尝试过 validates_length_of :foo, :minimum => 0 ,但没有成功
我也尝试过 validates_length_of :foo, :minimum => 0, :unless => :nil?这也不起作用。这两个都允许设置 nil 值并且验证仍然返回 true。
我在这里错过了什么吗?我觉得简单地验证该元素不为零不应该这么困难。
validate :blank_but_not_nil
def blank_but_not_nil
if self.foo.nil?
errors.add :foo, 'cannot be nil'
end
end
你可以尝试吗:
validates_length_of :foo, :minimum => 0, :allow_nil => false
例如:
User < ActiveRecord::Base
validates_length_of :name, :minimum => 0, :allow_nil => false
end
> u=User.new
> u.valid? #=> false #u.name is nil
> u.name=""
> u.valid? #=> true