: more_than_or_equal_to в validates_numericality только частично работает в рельсах 3.1
Мы используем следующее, чтобы проверить, является ли значение запаса (целое число или float, ноль, но не ноль) больше или равно нулю:
validates_numericality_of :stock_qty, :greater_than_or_equal_to => 0
validates_numericality_of :stock_qty, :less_than_or_equal_to => :in_qty, :if => Proc.new { |part| !part.in_qty.nil? }
: in_qty - это столбец в частичной модели. Эта проверка должна допускать положительный или 0 для: stock_qty. Проблема в том, что rspec не удалось, если: share_qty присвоен ноль. Я заметил, что: less_than_or_equal_to разрешено less_than и не допускает equal_to. Есть ли способ проверить ведомость >= или <= in rails 3.1? Или что может пойти не так с нашим кодом проверки выше. Спасибо.
Ответы
Ответ 1
попробуйте добавить :only_integer => true
так:
validates_numericality_of :stock_qty, :only_integer => true, :greater_than_or_equal_to => 0
ИЗМЕНИТЬ
если это нужно передать, когда значение_штука равно нулю или нулевому, вам нужно изменить свой код на это:
validates_numericality_of :stock_qty, :allow_nil => true, :greater_than_or_equal_to => 0
validates_numericality_of :stock_qty, :allow_nil => true, :less_than_or_equal_to => :in_qty, :if => Proc.new { |part| !part.in_qty.nil? }
Ответ 2
validates :stock_qty, :numericality => { :only_integer => true, :greater_than_or_equal_to => 0 }
он работает в моем приложении 3.1, в моем случае у меня есть цена, и когда я обновляю или добавляю продукт с ценой, я получил ошибку "это не число" или что-то в этом роде, но я могу поместить 0 в столбец цены и он обновляет только штраф. надеюсь, что это поможет.
: greater_than_or_equal_to –
Указывает, что значение должно быть больше или равно заданному значению. Сообщение об ошибке по умолчанию для этого параметра "должно быть больше или равно% {count}".
http://guides.rubyonrails.org/active_record_validations_callbacks.html
Ответ 3
Также вы можете поверить, что было 0, тогда как nil
. nil
не пройдет эту проверку.