特定のフィールドでは、presence => trueを使用してモデルを検証しようとしていますが、これらのフィールドがnilであってもモデルは有効として返されます。ここに私のリプレイモデルの検証は、次のとおりです。これらの存在検証が失敗するのはなぜですか?
validate :match_id, :presence => true
validate :replay_url, :presence => true
validate :uploader_id, :presence => true
私はコンソールを開き、次のように入力した場合、あなたは私が何を意味するか見ることができます。これはなぜ
1.9.3p0 :001 > r = Replay.new
=> #<Replay id: nil, match_id: nil, replay_url: nil, created_at: nil, updated_at: nil, uploader_id: nil>
1.9.3p0 :002 > r.valid?
=> true
誰でも知っていますか?
あなたはvalidate' 'に与えるシンボルが呼ばれ、何かが間違っていることを示すためにerrors.add''経由でエラーを追加することが予想され、戻り値があります無視される。あなたはARを通して 'match_id'メソッドを持っていますので、' validate:match_id'は期待通りに動かなくても実行されます。答えは正しいが、あなたの間違ったコードが黙って失敗した理由を知りたいかもしれないと思った。 –