これが私のコード例です:
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 を返すと移行が停止すると誤解していますか? トランジションを停止すると、アフター コールバックも無視されますか? それとも、何があっても常に実行されますか?
この最後のことが真である場合、そのコールバックに状態を渡すにはどうすればよいでしょうか?
事前に感謝します。さらに情報が必要な場合はお知らせください...
jd