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和输出感到困惑。发生这种情况是因为前两个是在类级别定义的,并且在读取文件和配置状态机时打印。Check UniquenessTo lowercase testputs

而最后puts一个在方法中被调用,当实例已经创建并且事件被触发时。

您可以通过定义状态机进行测试,但不触发任何事件:您仍将看到状态机定义的输出。

于 2016-11-12T21:21:52.740 回答