我正在尝试编写一个允许任何字符串但不允许nil的活动记录验证。
validates_presences_of的问题是它为“”或“”返回false,我想认为它有效。
我也尝试过validates_length_of:foo,:minimum => 0无法正常工作
我还尝试过validates_length_of:foo,:minimum => 0,:除非=> :零?这也没用。这两个都允许设置nil值,验证仍然返回true。
我在这里遗漏了什么吗?我觉得简单地验证元素不是零是不容易的。
答案 0 :(得分:3)
validate :blank_but_not_nil
def blank_but_not_nil
if self.foo.nil?
errors.add :foo, 'cannot be nil'
end
end
答案 1 :(得分:2)
你可以尝试:
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