Rails控制器中的自定义方法验证错误

时间:2014-04-21 15:26:27

标签: ruby-on-rails validation activerecord

我是Rails的新手,请原谅这个问题。我最近遇到了一个问题,如果有人能帮助找到合适的解决方案,我将不胜感激。

我想将此自定义方法添加到我的验证中。一旦用户提交了超过结束日期的开始日期,它就会引发错误

class Request < ActiveRecord::Base
    validates :start_date, :to_date, presence: true
    validates :checkin_date_cannot_be_in_the_past

    def checkin_date_cannot_be_in_the_past 
        if :date > :todate
        errors.add(:date, "can't be in the past") 
    end 
end

不幸的是,这个自定义方法对我不起作用,如Active Record Validations文档中所述,并在我的控制器中引发错误(语法错误,意外的输入结束,期望keyword_end):

  def new
   @request = Request.new
  end 

花了一些时间研究后,我找不到合适的解决方案,所以我希望也许有人可以帮忙吗?

干杯

罗布

1 个答案:

答案 0 :(得分:2)

这应该验证调用自定义验证不验证

class Request < ActiveRecord::Base
  validates :start_date, :to_date, presence: true
  validate :checkin_date_cannot_be_in_the_past

  def checkin_date_cannot_be_in_the_past 
    errors.add(:date, "can't be in the past") if date > todate
  end 
end