State Machine, проверки моделей и RSpec

Вот мое текущее определение класса и спецификация:

class Event < ActiveRecord::Base

  # ...

  state_machine :initial => :not_started do

    event :game_started do
      transition :not_started => :in_progress
    end

    event :game_ended do
      transition :in_progress => :final
    end

    event :game_postponed do
      transition [:not_started, :in_progress] => :postponed
    end

    state :not_started, :in_progress, :postponed do
      validate :end_time_before_final
    end
  end

  def end_time_before_final
    return if end_time.blank?
    errors.add :end_time, "must be nil until event is final" if end_time.present?
  end

end

describe Event do
  context 'not started, in progress or postponed' do
    describe '.end_time_before_final' do
      ['not_started', 'in_progress', 'postponed'].each do |state|
        it 'should not allow end_time to be present' do
          event = Event.new(state: state, end_time: Time.now.utc)
          event.valid?
          event.errors[:end_time].size.should == 1
          event.errors[:end_time].should == ['must be nil until event is final']
        end
      end
    end
  end
end

Когда я запускаю спецификацию, я получаю два отказа и один успех. Понятия не имею почему. Для двух штатовreturn if end_time.blank? заявление вend_time_before_final Метод оценивается как истинное, когда оно должно быть ложным каждый раз. & APOS; отложен & APOS; это единственное состояние, которое, кажется, проходит. Есть идеи относительно того, что здесь может происходить?

Ответы на вопрос(1)

Ваш ответ на вопрос