我正在尝试使用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
如何在活动开始之前或之后做点什么?
答案 0 :(得分:1)
在事件发生前调用您的to_lowercase
方法。
我想您对Check Orthography
之前发生的Check Uniqueness
和To lowercase test
输出感到困惑。发生这种情况是因为前两个puts
是在类级别定义的,并在读取文件并配置状态机时打印。
在方法中调用最后一个puts
,而实例已经创建并且触发了一个事件。
您可以通过定义状态机来测试它,但不会触发任何事件:您仍将看到状态机定义的输出。