How to implement min/max validator in Rails 3?

后端 未结 3 1350
情书的邮戳
情书的邮戳 2020-12-14 14:08

What is the rails way of implementing a min max validator in Rails 3 ?

I have a model, with min_age and max_age attributes.

Age can be in the range of 0..100

相关标签:
3条回答
  • 2020-12-14 14:29
    validates_numericality_of :min_age, greater_than: 0
    validates_numericality_of :max_age, less_than_or_equal_to: 100
    validates_numericality_of :max_age, greater_than: :min_age
    

    You can also use age, like this:

    validates_numericality_of :age, less_than_or_equal_to: 100, greater_than: 0
    
    0 讨论(0)
  • 2020-12-14 14:33

    You can also use inclusion...in, as in:

    validates :height, inclusion: { in: 1..3000, message: 'The height must be between 1 and 3000' }
    
    0 讨论(0)
  • 2020-12-14 14:40

    Check out the 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}")
    }
    

    code:

    validates :min_age, numericality: { greater_than: 0, less_than_or_equal_to: :max_age }
    
    validates :max_age, numericality: { less_than_or_equal_to: 100 }
    

    I don't know if you want to validate presence or not, but you would just add that as another key to your validations, e.g.

    validates :max_age, numericality: { less_than_or_equal_to: 100 }, presence: true
    
    0 讨论(0)
提交回复
热议问题