ActiveRecordvalidation为零

我正在尝试编写一个允许任何字符串但不允许nil的活动记录validation。

validates_presences_of的问题是它为“”或“”返回false,我想认为它是有效的。

我也尝试过validates_length_of:foo,:minimum => 0这样做不起作用

我也尝试过validates_length_of:foo,:minimum => 0,:除非=>:nil? 这也没用。 这两个都允许设置nil值,并且validation仍然返回true。

我错过了什么吗? 我觉得简单地validation元素不是零是不应该的。

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