2012-08-04 9 views
35

私のフィールドは、正の値を検証したい tax ratetax amountです。負でない整数と小数の値の妥当性確認

私は、この検証書いた:

:format => { :with => /\A[+]?\d+\Z/} 

をしかし、それは4.67のような小数点で数字を取っていません。 それは私に間違いを投げかけています。 整数型と浮動小数点型で有効な検証のタイプは何ですか?例えば、 の場合:2,57,54.56が合格、-2.56の場合は-87が失敗します。

答えて

107

これは機能しませんか?

validates :your_field, :numericality => { :greater_than_or_equal_to => 0 } 

(ルールがより正確になり、次の税を推測:)

あなたが使用することができ
validates :your_field, :numericality => { :greater_than_or_equal_to => 0, :less_than_or_equal_to => 100 } 
+0

応答のためのThanx。やってみます。 –

+0

フィールドは文字列か浮動小数点ですか?それが文字列でないなら、正規表現をしてはいけません。この例のようなものが良いでしょう。 <0 – Ultimation

6

0、2、1.2、3.2:

validates :tax_rate, inclusion: { in: 0..5 } 

それはのような値を許可します

希望すると助かります!

+2

私が前にテストしていたものの、それを使用しないことにしたいくつかのバリデーションでは、まったく同じ構文を使用しました。ユーザーがその範囲外の値を入力すると、「値は含まれていません」というようなエラーが表示されます。ユーザーにはより意味のあるエラーが表示されるため、 ':greater_than_or_equal_to'のような解決策を選択しました。 – Tass