0

Rails 3.2.8でモデルを設定しようとしていますが、特定の値が存在する必要がありますが、空の文字列にすることができます。誰かがこれを行う方法を知っていますか?

私が探している動作は次のようになります。

@foo.value = "this is a real value"
@foo.valid? # => true

@foo.value = nil
@foo.valid? # => false

@foo.value = ""
@foo.valid? # => true

使用する場合

validates :foo, :presence => true

次に、1と2に必要なものを取得しますが、3は取得しません。また、プレゼンスを検証するときに:allow_blank => true無視されます。

私も試しました

validates :foo, :length => { :minimum => 0 }, :allow_nil => false

同じ動作:1と2に必要なものを取得しますが、3は取得しません。

列をNOT NULLデータベースのようにマークすることもできると思いますが、例外をキャッチする必要があります。検証段階でこれをキャッチしたいと思います。

何か案は?

4

1 に答える 1

1

私はこのようなことを試みます:

validates :foo, presence: true, unless: lambda { |f| f.foo === "" }
于 2012-10-23T23:11:25.787 に答える