0

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

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

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

我也尝试过 validates_length_of :foo, :minimum => 0, :unless => :nil? 这也不起作用。这两个都允许设置 nil 值并且验证仍然返回 true。

我在这里错过了什么吗?我觉得简单地验证元素不为零不应该这么难。

4

2 回答 2

4
validate :blank_but_not_nil

def blank_but_not_nil
   if self.foo.nil?
     errors.add :foo, 'cannot be nil'
   end
end
于 2013-02-06T19:36:00.557 回答
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
于 2013-02-06T19:30:50.350 回答