custom_form.html.erb
<%= f.date_select :creation_date %>
我的数据库中有creation_date
类date
列。一切正常,但我需要在 server.rb 模型中验证:creation_date
。
我需要验证:
简单:creation_date
验证validates_date :creation_date, presence =>true ...
调用Undefined Method
错误。
我在论坛上看到,如果日期无效,我的:creation_date
将设置为nil
。
我想我们可以检查:creation_date
nil
值来处理列表中的1项?
如何实施第二项?
UPD(已解决):
问题在于模型。我尝试在 server.rb 中验证用户模型的属性。我已将验证移至 user.rb ,现在我可以使用timeliness gem验证:creation_date
答案 0 :(得分:2)
试试这个:
class MyModel < ActiveRecord::Base
validate :mydate_is_date
private
def mydate_is_date
unless :mydate.is_a?(Date)
errors.add(:mydate, 'must be a valid date')
end
end
end
答案 1 :(得分:0)
验证:creation_date,presence:true
此方法来自默认的rails验证,如果它是日期字段,则会检查空白值或无效日期。
答案 2 :(得分:0)
关于你的第一个项目,你已经获得了一些完全可以接受的答案(我会亲自实施G.B.)。
关于你的第二项,它取决于你的界限。在我看来,最简单的方法是简单地比较日期对象。例如:
validate :mydate_is_within_range
private
def mydate_is_within_range
unless mydate > min_date && mydate < max_date
errors.add(:mydate, 'date must be within the allowed range')
end
end
现在,这依赖于日期形式的最小和最大日期,但我怀疑你已经拥有这个?无论如何,它应该让你走上正确的轨道。