2012-08-04 12 views
35

Мои поля: tax rate и tax 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

Вы могли бы использовать:

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

Это позволяет значения, как: 0, 2, 1,2, 3,2

Надеюсь, это поможет!

+2

. Я использовал тот же самый синтаксис в некоторой проверке, которую я тестировал ранее, но решил не использовать ее. Если пользователь вводит значение вне этого диапазона, они получают ошибку, которая читает что-то вроде «значение не включено». Я выбрал решение, подобное ': more_than_or_equal_to', потому что пользователю представлена ​​более значимая ошибка. – Tass

Смежные вопросы