Как реализовать min / max валидатор в Rails 3?
каков способ rails реализации min max validator в Rails 3 ?
У меня есть модель, с атрибутами min_age и max_age.
возраст может быть в диапазоне от 0..100, но я хочу также проверить значения пересечения, я имею в виду, что max больше или равен min
{:min_age => 0, :max_age => 0} => true
{:min_age => 0, :max_age => 1} => true
{:min_age => 1, :max_age => 0} => false # max < min
{:min_age => 1, :max_age => 101} => false # out of 0..100 range
3 ответа:
Проверьте ActiveModel:: Validations:: NumericalityValidator: RailsAPI NumericalityValidator
spec:
it { subject.max_age = 10 subject.min_age = 20 subject.should be_invalid subject.errors[:min_age].should include("must be less than or equal to #{subject.max_age}") }
код:
validates :min_age, numericality: { greater_than: 0, less_than_or_equal_to: :max_age } validates :max_age, numericality: { less_than_or_equal_to: 100 }
Я не знаю, хотите ли вы проверить присутствие или нет, но вы просто добавите это как еще один ключ к вашим проверкам, например
validates :max_age, numericality: { less_than_or_equal_to: 100 }, presence: true
вы также можете использовать inclusion...in, как в:
validates :height, inclusion: { in: 1..3000, message: 'The height must be between 1 and 3000' }