rails自定义验证器似乎不起作用

时间:2012-10-30 13:16:37

标签: ruby-on-rails-3 model relationship validation

我写了一个自定义验证器,它位于lib / readiness_for_completion_validator.rb中:

class DisruptionTimeValidator < ActiveModel::Validator
  def validate(record)
    # if record.timeline.events[0].event_time > record.timeline.events[1].event_time 
    if true 
      record.errors[:Outage] << " end time needs to be after outage begin time" 
    end
  end
end

问题是,如果我用'if true'代替注释掉的行,我就无法触发它。

我在rails控制台中测试了这个条件,它的工作方式和我想要的完全一样,但它在验证器中从不评估为真......

任何帮助将不胜感激,我花了很多时间研究这个,这让我发疯:(

我有一个包含很多事件的时间轴。人们可以调整事件的event_time,但每个时间轴包含两个需要连续发生的特殊事件。

以下是app / models / event.rb中的内容:

class Event < ActiveRecord::Base
  attr_accessible :event_description, :event_time, :timeline_id

  belongs_to :timeline

  validates :event_description, :length => { :in => 10..255 }

  validates_with DisruptionTimeValidator, :on => :update

end

(我弄乱了:on但它没有任何区别)

非常感谢任何帮助,

非常感谢!

1 个答案:

答案 0 :(得分:0)

我想通了......我的验证器是正确的,我通过在控制器中排序事件然后保存时间线来弄乱事情...所以当新事件被添加事件[0]和事件[1被其他事件取代......