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

时间:2011-06-20 11:10:42

标签: ruby ruby-on-rails-3 activerecord

我想验证数字:value是否在1或2

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

但是,上述代码在value == 1

时未通过验证

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

4 个答案:

答案 0 :(得分:34)

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

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

答案 1 :(得分:16)

您正在寻找validates_inclusion_of

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

你也可以使用(相当新的)射击形式和范围而不是数组:

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

答案 2 :(得分:13)

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

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

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

答案 3 :(得分:0)

如果您使用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"]