validation值是否在某个范围内,例如1 <= val <= 2

我想validation一个数字:value在1或2之内

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

但是,当value == 1时,上述代码未通过validation

请确保您的解决方案允许我添加validation消息。

 validates :value, :inclusion => {:in => [1,2]} 

请参阅http://apidock.com/rails/ActiveModel/Validations/HelperMethods/validates_inclusion_of

您正在寻找validates_inclusion_of :

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

您还可以使用(相当新的)shothand表单和Range而不是Array:

 validates :value, :inclusion => { :in => 1..2 } 

如果你想让它成为1和2之内的数字(1.5,1.6839749等)呢

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

可能不是你想要的,但值得注意的是,

如果使用inclusion错误消息不好:

 ["Value is not included in the list"] 

使用

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

为了更好的错误消息,例如:

 ["Value must be less than or equal to 2"]