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)
Все вызовы возвращают массив возможных состояний.