gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 05:51:00 25 4
gpt4 key购买 nike

在 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com