2012-01-18 17 views
1

特定のフィールドでは、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 

誰でも知っていますか?

+0

あなたはvalidate' 'に与えるシンボルが呼ばれ、何かが間違っていることを示すためにerrors.add''経由でエラーを追加することが予想され、戻り値があります無視される。あなたはARを通して 'match_id'メソッドを持っていますので、' validate:match_id'は期待通りに動かなくても実行されます。答えは正しいが、あなたの間違ったコードが黙って失敗した理由を知りたいかもしれないと思った。 –

答えて

1

検証* S *

validates :match_id, :presence => true 
validates :replay_url, :presence => true 
validates :uploader_id, :presence => true 
関連する問題