0

任意の文字列を許可するが nil は許可しないアクティブ レコード検証を作成しようとしています。

validates_presences_of の問題は、有効と見なしたい "" または " " に対して false を返すことです。

また、 validates_length_of :foo, :minimum => 0 を実行しようとしましたが、機能しませんでした

また、validates_length_of :foo, :minimum => 0, :unless => :nil? を実行しようとしました。これも機能しませんでした。これらはどちらも nil 値を設定でき、検証は引き続き true を返します。

ここで何か不足していますか?要素が nil ではないことを単純に検証するのは、それほど難しいことではないと思います。

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 に答える