次の状態があります: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
が true の場合、状態は からに:A
なり:C
ますが、false の場合、両方の状態は から:A
になります:B
。問題は、状態が:B
であり、:my_event
トリガーされた場合です。何か不足していますか?:C
:B
rubymine を使用してコードをデバッグしたところ、状態が atでイベントがトリガーされたときに、ブレークポイントがメソッド:B
で停止しないことがわかりました。:test_condition
まったく呼び出されません。
ドキュメントではif
orについてelse
は一度に 1 回しか議論されておらず、 に関連するものについては何も言及されていませんif State_1 else State_2
。