Обработка ошибок направляющих с конечным автоматом AASM

Я использую rubyist-aasm конечный автомат для обработки различных состояний в моем Объекте-событии (инициализированное событие, обсужденное событие, опубликованное событие, и т.д.). Я добавил защиту для предотвращения изменений состояния, когда определенные условия не соблюдены.

Это все хорошо работает, но это не показывает ошибок, когда изменение состояния было отклонено защитой. Какая-либо идея, как я вижу состояние, не изменилась? Я мог проверить состояния вручную, но это походит на ужасное решение.

aasm_state :firststate 
aasm_state :secondstate  

aasm_event :approve do
  transitions :to => :secondstate, :from => [:firststate], :guard => :has_a_price? 
end

def has_a_price?   
  self.price.present?
end

6
задан Cimm 7 January 2010 в 09:33
поделиться

1 ответ

Я знаю, что в рубиисте 2.0.2 можно вызвать добавление '!' к вызову метода перехода, который вернет false, если переход не удался. Допустим, у вас есть метод контроллера с именем confirm:

def approve
  @event = Event.find params[:id]

  if @event.approve!
    # transition occurred
  else
    # handle the failed transition (flash or errors)
  end
end

Дайте мне знать, что вы думаете?

1
ответ дан 17 December 2019 в 07:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: