Классы переходов (конечный автомат) получают список возможных переходов - PullRequest
2 голосов
/ 05 марта 2011

Я использую ActiveRecord::Transitions в Rails 3, и мой конечный автомат определяет как:

state_machine do
 state :initial # first one is initial state
 state :active
 state :disabled

 event :activate do
   transitions :to => :active, :from => [:initial, :disabled]
 end
 event :disable do
   transitions :to => :disabled, :from => [:initial, :active]
 end
end

Как просмотреть список доступных переходов для текущего объекта и состояния? Например, если у меня @product в состоянии «активный», он должен сказать мне

  • «отключен» - это единственное доступное состояние, или
  • «отключить» - единственное доступное событие

Ответы [ 2 ]

3 голосов
/ 08 марта 2011

Я не вижу очевидного способа перечисления возможных следующих состояний, но вы можете запросить доступные события следующим образом:

YourClass.state_machines[:default].events_for(:active)
 => [:disable] 

(Если у вас более одного конечного автомата, будетдополнительные члены в YourClass.state_machines хэш)

1 голос
/ 05 декабря 2014

Этот ответ теперь более актуален

В основном - у вас есть доступ к @product.state_evants, @product.state_transitions и @product.state_paths

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...