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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在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启动时进行硬编码,并且不会在明年更新(直到重新启动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

以上是关于在Rails 5模型中验证毕业日期的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Rails 中验证日期?

以下代码片段是不是容易受到 Rails 5 中 SQL 注入的影响?

ruby 我的博客文章“Rails中更好的条件验证”的片段

模型文件中的 Ruby on Rails IBAN 验证

无法在 Rails 中编写日期验证

Rails 5 - 使用 Audited gem 查看更改