RAILS:date_select验证

时间:2015-06-05 11:43:55

标签: ruby-on-rails ruby validation date

custom_form.html.erb

<%= f.date_select :creation_date %>

我的数据库中有creation_datedate列。一切正常,但我需要在 server.rb 模型中验证:creation_date
我需要验证:

  1. 日期类型有效
  2. 最大\分钟日期开始\结束期
  3. 简单: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

3 个答案:

答案 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

现在,这依赖于日期形式的最小和最大日期,但我怀疑你已经拥有这个?无论如何,它应该让你走上正确的轨道。