验证 Rails 5 模型中的毕业日期



我试图确保用户在我的应用程序中有一个有效的毕业日期。不确定每次我想验证用户的毕业日期时,我的current_year变量是否会更新。这是我所拥有的(我使此字段对用户可选(:

current_year = Time.now.year 
if !(:grad_year.nil?)
validates :grad_year, numericality: { greater_than_or_equal_to: current_year, less_than_or_equal_to: current_year + 5 }
end
validates :grad_year, numericality: { greater_than_or_equal_to: Date.today.year, less_than_or_equal_to: Date.today.year + 5 }, allow_nil: true

实际上,使用Date.today.year进行验证是不正确的,因为当前年份将在 Rails start 上进行硬编码,并且明年不会更新(直到您重新启动 Rails(。

请改用 Lambda:

validates :grad_year, numericality: { greater_than_or_equal_to: -> { Date.today.year }, less_than_or_equal_to: -> { Date.today.year + 5 } }, allow_nil: true

最新更新