2013-11-21 3 views
0

Я хотел бы использовать transition_for из state_machine драгоценного камня, но документы не показывают, какой объект я должен использовать:state_machine драгоценного камня, как использовать transition_for

http://rdoc.info/github/pluginaweek/state_machine/master/StateMachine/Event:transition_for

У вас есть пример, чтобы показать мне?

+0

Что вы хотите использовать для перехода на переход? На что вы надеетесь выйти? – AndyV

+0

Мне нужно знать следующие доступные состояния, которые я могу назвать – rtacconi

ответ

1
class Stately 
    state_machine :state, initial: :pending do 
    state :approved 
    state :declined 

    event :approve do 
     transition pending: :approved 
    end 

    event :decline do 
     transition all => :declined 
    end 
    end 
end 

stately = Stately.new 
stately.state 
#=> :pending 

stately.state_events 
#=> [ :approve, :decline ] 

stately.approve 
stately.state_events 
#=> [ :decline ] 

Если то, что вы хотите сделать, чтобы предотвратить себя от случайного запуска события, которое будет сгенерировано исключение (более узкую сферу применения, чем пытаться увидеть все события), то вы можете также сделать это ...

stately = Stately.new 
stately.state 
#=> :pending 

stately.can_approve? 
#=> true 
stately.can_decline? 
#=> true 

stately.approve 
stately.can_approve? 
#=> false 
stately.can_decline? 
#=> true 
Смежные вопросы