Validate that a value is in a certain range, e.g. 1 <= val <=2

后端 未结 4 1288
逝去的感伤
逝去的感伤 2021-02-12 09:24

I want to validate a number :value to be within 1 or 2

validates :value, :format => { :with => /1|2/, :message => \"Select number..\" }


        
相关标签:
4条回答
  • if you want it to be a number within 1 and 2 ( 1.5, 1.6839749, etc ) do

    validates_numericality_of :value, :greater_than_or_equal_to => 1, :less_than_or_equal_to => 2, :message => "blah"
    

    may not be what you are looking for but is worth noting,

    0 讨论(0)
  • 2021-02-12 09:49

    You're looking for validates_inclusion_of:

    validates_inclusion_of :value, :in => [1, 2],
      :message => "Select one of %{value}"
    

    You can also use the (fairly new) shothand form and a Range instead of an Array:

    validates :value, :inclusion => { :in => 1..2 }
    
    0 讨论(0)
  • 2021-02-12 10:03

    If you use inclusion error messages are not good:

    ["Value is not included in the list"]
    

    Use

    validates :value, presence: true, numericality: { greater_than_or_equal_to: 1, less_than_or_equal_to: 10 }
    

    For better error messages, like:

    ["Value must be less than or equal to 2"]
    
    0 讨论(0)
  • 2021-02-12 10:09
    validates :value, :inclusion => {:in => [1,2]}
    

    See http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_inclusion_of

    0 讨论(0)
提交回复
热议问题