2012-05-02 39 views
1

validates_length_ofのエラーメッセージをカスタマイズして、チェックされている属性の長さを含めたいとします。メッセージ内で"%{value}"または"%{attribute}"を実行してこれらの値を取得できることはわかっています。属性の長さを取得するために使用できるフラグはありますか?私はきれいなメッセージを得るためにカスタム検証を作成することを避けることを望んでいました。また、バリデーターが既にそれを行っているときに、文字列に対して2回カウントするのは無駄です。属性の長さを含めるためにvalidates_length_ofメッセージをカスタマイズする方法はありますか?

validates_length_of :a, :b,:c, :d, :e, :maximum => 1000, :message=>"is to long, maximum length is` %{count}, current length is %{actual length here} " 
+0

はこの答えを呼び出していない属性を取得するためにPROCを使用しますが、することができます:ここで

は私が望むものです。 message => "長さは%{count}でなければなりませんが、#{%{value} .length}"にする必要があります。基本的には、%{value}を#{}内の実際の式のように扱うことができると期待しています。 – danh

+0

ダン、それは私の最初の考えの一つでした。残念ながら、期待どおりに動作しませんでした。 –

答えて

3

は、あなたはどのくらいの、それは暗闇の中で刺すのより多くのだから

validates_length_of :a, maximum: 1000, 
    message: proc { |p, v| "is to long, " + 
          "maximum length is #{v[:count]}, " + 
          "current length is #{v[:value].length}" } 
+0

私はprocを避けることを望んでいた。しかし、レールのソースを掘り下げた後、私は望んでいたものは存在しないと思う。 –

関連する問題