validation - 如何在 Rails 3 中实现最小/最大验证器?

标签 validation ruby-on-rails-3

在 Rails 3 中实现最小最大验证器的 Rails 方法是什么?

我有一个模型,具有 min_age 和 max_age 属性。

年龄可以在 0..100 的范围内,但我还想验证交叉值,我的意思是最大值大于或等于最小值

{:min_age => 0, :max_age => 0} => true
{:min_age => 0, :max_age => 1} => true
{:min_age => 1, :max_age => 0} => false # max < min
{:min_age => 1, :max_age => 101} => false # out of 0..100 range

最佳答案

查看 ActiveModel::Validations::NumericalityValidator: RailsAPI NumericalityValidator

规范:

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}")
}

代码:

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

validates :max_age, numericality: { less_than_or_equal_to: 100 }

我不知道您是否想验证是否存在,但您只需将其添加为验证的另一个 key ,例如

validates :max_age, numericality: { less_than_or_equal_to: 100 }, presence: true

关于validation - 如何在 Rails 3 中实现最小/最大验证器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4416278/

相关文章:

ReactJS 和 Typescript : refers to a value, 但在此处用作类型 (TS2749)

Javascript 验证字符串是一个字符后跟数字

ruby-on-rails - rails mongoid 中的多键索引

ruby-on-rails - Rails 中的参数列表太长

ruby-on-rails-3 - 如何使用 postgresql 在 rails 中设置表所有权?

validation - SweetAlert2 : Validation required for one of the fields

php - 如何在 POST 到数据库之前将用户消息转换为字符串?那么几乎如何使用 php pdo mysql 避免 SQL 注入(inject)等

flutter - 参数类型 'String? Function(String)' 无法分配给参数类型 'String? Function(String?)?'

ruby-on-rails - 由于 windows 中的 openssl/ETimedout,gem install Rails 无法工作

ruby - 使用 to_html 时如何避免在 Nokogiri 中漂亮地打印 HTML?