我有以下状态:A
,,,:B
。:C
require 'state_machine'
class Example
property :value, String
def test_condition
value == "hmm"
end
state_machine :state, :initial => :A do
event :my_event do
transition [:A, :B] => :C, :if => :test_condition
transition :A => :B, :unless => :test_condition
end
end
def my_event
#Some Logic
end
end
当:test_condition
为真时,状态从:A
to:C
但当它为假时,两个状态都从:A
to :B
,问题是当我的状态被触发时:B
,:my_event
在这种情况下,状态不会变为:C
并停留在:B
。我错过了什么吗?
我使用 rubymine 调试了我的代码,发现当状态为 at:B
并触发事件时,断点不会在:test_condition
方法处停止;它根本不会被调用。
文档一次只讨论if
orelse
一次,没有提到与if State_1 else State_2
.