【发布时间】:2011-06-20 11:10:42
【问题描述】:
我想验证一个数字 :value 在 1 或 2 以内
validates :value, :format => { :with => /1|2/, :message => "Select number.." }
但是,上面的代码在value == 1时验证失败
请确保您的解决方案允许我添加验证消息。
【问题讨论】:
标签: ruby ruby-on-rails-3 activerecord
我想验证一个数字 :value 在 1 或 2 以内
validates :value, :format => { :with => /1|2/, :message => "Select number.." }
但是,上面的代码在value == 1时验证失败
请确保您的解决方案允许我添加验证消息。
【问题讨论】:
标签: ruby ruby-on-rails-3 activerecord
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 form 和 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"]
【讨论】: