ActiveRecord验证为零

时间:2013-02-06 19:20:11

标签: ruby-on-rails ruby rails-activerecord activesupport

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

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

我也尝试过validates_length_of:foo,:minimum => 0无法正常工作

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

我在这里遗漏了什么吗?我觉得简单地验证元素不是零是不容易的。

2 个答案:

答案 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