Ruby on rails 基于可能更改的变量验证字段
我正在尝试验证出生日期字段,该字段必须在一定范围内:Ruby on rails 基于可能更改的变量验证字段,ruby-on-rails,validation,date,activerecord,Ruby On Rails,Validation,Date,Activerecord,我正在尝试验证出生日期字段,该字段必须在一定范围内: validates :year_of_birth, :inclusion => { :in => 1900..Date.today.year - 5 } 虽然对于这种情况,它不会造成这么大的问题,但我意识到这只适用于每次重新加载模型,从而再次计算当前年份的开发 在生产过程中,我如何避免这种情况,比如说,在今年年初,范围的右端与前一年一样?在这种情况下,我建议您进行自定义验证 validate :validates_year_of
validates :year_of_birth, :inclusion => { :in => 1900..Date.today.year - 5 }
虽然对于这种情况,它不会造成这么大的问题,但我意识到这只适用于每次重新加载模型,从而再次计算当前年份的开发
在生产过程中,我如何避免这种情况,比如说,在今年年初,范围的右端与前一年一样?在这种情况下,我建议您进行自定义验证
validate :validates_year_of_birth
def validates_year_of_birth
five_years_ago = 5.years.ago.year
if year_or_birth && (year_of_birth < 1990 || year_of_birth > five_years_ago)
errors.add :year_of_birth, "should be between 1990 and #{five_years_ago}"
end
end
非常感谢你。我选择proc方式是因为对于我想要实现的目标来说,它似乎是一个更苗条的解决方案。感谢您让我知道定制验证器的存在!
validates :year_of_birth, :inclusion => { :in => proc { 1900..5.years.ago.year } }