0
我正在使用aasm statemachine。我有以下事件。它所做的是將狀態從更改爲payment_response_received
。所以在改變這個之後,我想調用一個方法verify_payment_response(data)
。 我可以通過調用@booking.move_to_payment_response_received!
來改變狀態,但是如何傳遞參數以便在回調之後使用?將參數傳遞給aasm事件
event :move_to_payment_response_received do
after_commit do
self.verify_payment_response(data) #How can I pass this data param from my controller
end
transitions from: :order_created, to: :payment_response_received
end
什麼是驗證點提交後狀態機中的數據?即使數據無效,該事件也被解僱了?在事件發生前應該驗證數據還是在事件發生時作爲驗證的一部分?請顯示你的控制器方法和'verify_payment_response'方法。 – spickermann
@spickermann我收到2個來源的payment_response。一個來自客戶端瀏覽器js,另一個來自webhook直接來自pg。所以我都沒有任何控制。我只想調用'verify_payment_response(data)'一次。因此,無論哪個響應首先將用於'verify_payment_response(data)'。此外,如果簽名驗證由於某種原因失敗,'verify_payment_response'方法會使api調用(後臺工作人員)到payment_gateway直接檢查狀態。所以爲了防止這種情況發生,有兩次添加了payment_response_received狀態 – Abhilash
@spickermann控制器在'if'子句中只有這個'@ booking.move_to_payment_response_received!'。verify_payment_response可以通過2種方法調用(webhook&post request from js在客戶端瀏覽器中)。我不知道哪一個會先開火。但是,哪一個先來我想要使用它。因此,如果狀態更改爲payment_response_received,則第二個將失敗,並且不會再次調用verify_payment_response,這就是此方法的意圖。 – Abhilash