2012-08-04 8 views
35

Moje pola to: tax rate i tax amount, w których chcę zatwierdzić wartości dodatnie.Sprawdzanie poprawności dla liczb całkowitych nieujemnych i wartości dziesiętnych

Napisałem ten Walidacja:

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

Ale to nie bierze liczby z przecinkiem jak 4.67. I rzuca mi to błąd. Jaki typ sprawdzania poprawności będzie działał na liczbach całkowitych i zmiennoprzecinkowych? na przykład: 2, 57, 54.56 powinien przejść, ale -2.56, -87 powinien zawieść.

Odpowiedz

107

Czy to nie działa?

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

(odgadnąć podatków Poniższa reguła będzie bardziej poprawne :)

validates :your_field, :numericality => { :greater_than_or_equal_to => 0, :less_than_or_equal_to => 100 } 
+0

Niż za odpowiedź. Spróbuję. –

+0

jest polem ciąg lub float? Jeśli nie jest to ciąg znaków, nie powinieneś wykonywać wyrażeń regularnych. Coś takiego jak ten przykład byłoby lepsze. Będziesz potrzebował sprawdzania poprawności, które sprawdza, czy jest <0 – Ultimation

6

Można użyć:

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

Pozwala wartości jak: 0, 2, 1.2, 3.2

Mam nadzieję, że pomoże!

+2

. Użyłem tej samej składni w niektórych testach sprawdzania, które wcześniej testowałem, ale zdecydowałem się ich nie używać. Jeśli użytkownik wprowadzi wartość spoza tego zakresu, otrzyma komunikat o błędzie, który brzmi "wartość nie jest uwzględniona". Zdecydowałem się na rozwiązanie takie jak ': greater_than_or_equal_to', ponieważ użytkownikowi przedstawiono bardziej znaczący błąd. – Tass

Powiązane problemy