rails aasm: получить все состояния, которые разрешают определенное событие

Я новичок в AASM и пытаюсь получить список всех состояний в модели MyModel, которые могут переходить в состояние: newstate.

Так, например:

  aasm_event :finish do
    transitions :to => :finalstate, :from => [:start, :working]
  end

По сути, я хочу вернуть массив [:start,:working] через модель, чтобы что-то вроде

MyModel.aasm_events.finish.transitions.from

Но, ну, это не синтаксис... и я не могу найти ничего для этого в документации.

Любые предложения приветствуются.

1 ответ

Решение

Это не было поддержано до сих пор. Недавно выпущенная версия gem 3.0.12 теперь поддерживает метод класса aasm_from_states_for_state, который делает именно то, что вы просили. К сожалению, предложенный вами маленький DSL (...finish.transitions.from) очень хорош, но пока недоступен. Но я буду иметь это в виду;)

Используйте новый метод класса следующим образом:

MyModel.aasm_from_states_for_state(:finalstate)

который возвращает все возможные состояния. Если вы хотите только состояния from для определенного перехода:

MyModel.aasm_from_states_for_state(:finalstate, :transition => :finish)

или более современный (с использованием Ruby 1.9)

MyModel.aasm_from_states_for_state(:finalstate, transition: :finish)

Все вызовы возвращают массив возможных состояний.

Другие вопросы по тегам