我写了一个自定义验证器,它位于 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 但没有任何区别)
任何帮助将不胜感激,
非常感谢!