这是我的示例代码:
class Foo < ActiveRecord::Base
include AASM
aasm_column :status
aasm_initial_state :start_state
aasm_state :start_state
aasm_state :state_two
aasm_state :end_state
aasm_event :move_to_two, :guard => :guard_callback, :after => :after_callback do
transitions :from => :start_state, :to => :state_two
end
def guard_callback
puts "executing guard callback..."
false
end
def after_callback
puts "executing after callback..."
end
这是我的代码外观的玩具表示。我只是从警卫回调中返回 false 来测试不执行转换或之后的行为。这是我在测试中调用的代码
foo = Foo.new
foo.move_to_two!
puts "foo's current status: #{foo.status}"
这是输出
executing after callback...
foo's current status: state_two
请注意,守卫永远不会被召唤......
我把警卫放在错误的地方了吗?我误会返回 false 会停止过渡吗?停止转换是否也会导致 after 回调被忽略?还是无论如何都会执行 after ?
如果最后一件事是真的,我如何将状态传递给该回调?
提前谢谢,如果您需要更多信息,请告诉我...
京东