module AASM::HandleEvent

Public Instance Methods

handle_event(event) click to toggle source

Конечный автомат принимает событие и AASM переводит модель в нужное состояние.

Метод создан с целью изоляции зависимости всего остального кода от исключительных ситуаций, генерируемых gem AASM

# File lib/c80_shared/aasm/handle_event.rb, line 7
def handle_event(event)
  if send('may_%s?' % event)                                  # сначала проверим, можем ли перейти в такое состояние
    send event                                                # шлём event (меняется состояние Предложения)
    return true
  end
  false
rescue NoMethodError, AASM::InvalidTransition
  errors.add :not_updated, I18n.t('activerecord.errors.not_updated')
  Rails.logger.warn '[InquiryStates.handle_event] Unknown event %s.' % event
  false
end