我正在尝试验证必须在一定范围内的出生日期:
validates :year_of_birth, :inclusion => { :in => 1900..Date.today.year - 5 }
虽然对于这种情况它不会造成这么大的问题,但我意识到这只适用于每次重新加载模型并因此再次计算当前年份的开发中。
在投入生产时,我怎么能避免这种情况,比如说,在年初,该范围的右端是否与前一年相同?
答案 0 :(得分:1)
在这些情况下,我建议您进行自定义验证。
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 } }