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
Что вы хотите использовать для перехода на переход? На что вы надеетесь выйти? – AndyV
Мне нужно знать следующие доступные состояния, которые я могу назвать – rtacconi