Ich verwende Rails-4.2.6
, state_machine-1.2.0 und Ruby-2.3
Ich hatte State Machine auf Order-Modell definiert. Wie folgtState Machine after_Transition Callback funktioniert nicht auf Update
state_machine :status, initial: :initiated do
after_transition on: :succeeded, do: :oderable_success_callback
event :pending do
transition initiated: :pending
end
event :failed do
transition [:initiated, :pending] => :failed
end
event :succeeded do
transition [:initiated, :pending] => :succeeded
end
end
def oderable_success_callback
orderable.successful_payment
end
Wenn ich Reihenfolge wie folgt aktualisieren, wird nach Rückruf Rückruf ausgelöst.
order.succeeded
aber es wird nicht Trigger Rückruf, wenn ich, um als
order.update(status: 'succeeded')
status
wird aktualisiert, um 'succeeded
' aktualisieren, aber nicht Rückruf auszulösen.
Wie kann ich after_transition
Rückrufe auf normale update
auslösen.
Sie für die Antwort danken. Tatsächlich habe ich mehrere Rückrufe abhängig vom Status. Wenn ich so triggere, dann müssen viele If/Else schreiben. –