0

RubyでAASMを使用して有限状態マシンで作業しようとしています。これは私のコードの一部です:

event :Orthography, :before => :to_lowercase do
    puts "Check Orthography"
    transitions :from => :Initialized, :to => :UniquenessChecked
end

event :Uniqueness do
    puts "Check Uniqueness"
    transitions :from => :UniquenessChecked, :to => :OrthographyChecked
end

... 

def to_lowercase
    puts "To lowercase test"
end

putsログとして取得します:

Check Orthography
Check Uniqueness
To lowercase test

しかし、私は before コールバックを使用しているので、期待しています:

To lowercase test
Check Orthography
Check Uniqueness

イベントの開始前または開始時に何かを行うにはどうすればよいですか?

4

1 に答える 1

1

メソッドto_lowercaseはイベントの前に呼び出されます。

と の前に発生する出力に混乱しているCheck Orthographyと思います。これは、最初の 2 つがクラス レベルで定義されており、ファイルが読み取られてステート マシンが構成されたときに出力されるために発生します。Check UniquenessTo lowercase testputs

インスタンスがすでに作成されており、イベントが発生した場合、最後putsはメソッドで呼び出されます。

これは、ステート マシンを定義することでテストできますが、イベントを発生させることはありません。ステート マシンの定義からの出力は引き続き表示されます。

于 2016-11-12T21:21:52.740 に答える