0

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

問題は、コメントアウトされた行を「真の場合」に置き換えると、それをトリガーできないことです。

Railsコンソールで条件をテストしたところ、希望どおりに機能しましたが、バリデーターでtrueと評価されることはありません...

どんな助けでも大歓迎です、私はこれを研究するのに多くの時間を費やしました、そしてこれは私を夢中にさせています:(

多くのイベントを含むタイムラインがあります。イベントの event_time を調整することはできますが、各タイムラインには、連続して発生する必要がある 2 つの特別なイベントが含まれています。

以下は、私が 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をいじりましたが、違いはありませんでした)

どんな助けでも大歓迎です、

どうもありがとう!

4

1 に答える 1

0

I figured it out... my validator is correct, I was messing things up by sorting events in my controller and then saving the Timeline... so as new events were being added up events[0] and events[1] were getting replaced by other events...

于 2012-10-30T13:57:07.920 に答える