2011-07-17 11 views
2

私のモデルの1つでは、Web APIからフェッチされた特定の値を設定するbefore_create属性があります。ただし、APIを使用しているときに結果が見つからない場合、このbefore_createはfalseを返し、モデル作成を強制終了します。before_createが失敗したときに警告メッセージを表示しますか?

これはうまくいきますが、警告メッセージも表示して、入力が受け入れられていないことをユーザーに知らせたいと思います。これをどうやってやりますか?

+0

あなたの 'before_create'と他の関連コードを投稿してください。 – s84

答えて

4

before_createは、エラーを報告する適切な場所ではありません。あなたのbefore_createは値を設定しようとしなければならず、次にバリデーターがそこにあるかどうかを確認しなければなりません。もしバリデーターが値を見つけられなければエラーメッセージなどが出ます。

before_validation :stuff_web_api_value_into_pancakes, :if => :new_record? 
validates_presence_of :pancakes 

あなたは、もちろん、validates_presence_ofとは異なるバリデータを使用することができ、それは、例示目的のためだけにあります:あなたの属性はpancakesと呼ばれているのであれば、あなたはこのような何かを持っていると思います。そして、before_validation hookが正しい順序で起こるようにするには、:if => :new_record?は新しいモデルを作成するときにのみフックを実行します。

+1

パンケーキ用のこのAPIはどこにありますか? – Thilo

+0

@Thilo:[Fargo(NSFW)](http://www.youtube.com/watch?v=dJUvPZI3Cr4)。 –

+0

私は検証が 'before_create'の前に実行されると信じています。 – madh

関連する問題