次の状態があります: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まったく呼び出されません。
ドキュメントではiforについてelseは一度に 1 回しか議論されておらず、 に関連するものについては何も言及されていませんif State_1 else State_2。