回调之前在AASM / Ruby中不起作用

时间:2016-11-12 21:01:33

标签: ruby aasm

我正在尝试使用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

我得到了put log:

Check Orthography
Check Uniqueness
To lowercase test

但我希望,因为我使用之前的回调:

To lowercase test
Check Orthography
Check Uniqueness

如何在活动开始之前或之后做点什么?

1 个答案:

答案 0 :(得分:1)

在事件发生前调用您的to_lowercase方法。

我想您对Check Orthography之前发生的Check UniquenessTo lowercase test输出感到困惑。发生这种情况是因为前两个puts是在类级别定义的,并在读取文件并配置状态机时打印。

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

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