2012-06-12 8 views
5

ActiveRecordモデルのフィールドの数値を検証する際に、サブオプションのエラーメッセージをカスタマイズするにはどうすればよいですか?数値オプションの検証にエラーメッセージをカスタマイズするにはどうすればよいですか?

例:この場合

validates :month, :numericality => { 
    :greater_than_or_equal_to => 1, 
    :less_than_or_equal_to => 12 
} 

「月」属性は12以上であれば、私の代わりに、デフォルトのカスタムエラーメッセージを提供したい「12以下でなければなりません」。これを達成する方法は?

答えて

8

カスタムバリデータを使用しない場合は、代わりにen.ymlファイルを使用できます。 「post」がモデル名であると仮定すると、これは年齢別メッセージ、事後固有メッセージ、およびジェネリック(すべてのモデル)メッセージの例を提供します。

en: 
    activerecord: 
    errors: 
     models: 
     post: 
      attributes: 
      age: 
       less_than_or_equal_to: "Age-specific error" # Applies only to post.age 
      less_than_or_equal_to: "Post-specific error" # Applies to all other fields for a post 
     messages: 
     less_than_or_equal_to: "Generic error" # Applies to all other models 
+0

しかし、それは私が 'less_than_or_equal_to'の複数の出現でそれをカスタマイズすることができないことを意味するでしょうか? – Vignesh

+0

複数の出現を表示するように更新 –

+0

only_integerはどうですか?そのキーはうまくいきませんが、greater_thanは同じ場所にネストされているときに機能します。編集(すなわち、回答):[ソースコード](https://github.com/rails/rails/blob/3-2-stable/activemodel/lib/active_model/validations/numericality.rb#L34)で見つけました。それは 'not_an_integer'です –

0

あなたはこの構文を使用することができるモデルに応じて、エラーメッセージをカスタマイズしたい場合は、次の

validates_numericality_of :month, 
    greater_than_or_equal_to: 1, 
    less_than_or_equal_to: 12, 
    message: "My custom error message" 

また、特定の条件に基づいて、エラーメッセージをカスタマイズするには、この構文を使用することができます。

validates_numericality_of :month, 
    greater_than_or_equal_to: 1, 
    message: "Too small" 

validates_numericality_of :month, 
    less_than_or_equal_to: 12, 
    message: "Too big 
関連する問題