J'utilise aasm statemachine. J'ai l'événement ci-dessous. Cela change l'état de order_created
à payment_response_received
. Donc, après avoir changé cela, je veux appeler une méthode verify_payment_response(data)
. Je peux faire ce changement d'état en appelant @booking.move_to_payment_response_received!
, mais comment puis-je passer des paramètres à utiliser dans le rappel après?Passer un paramètre à l'événement 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
Quel est le point de vérification de la des données dans la machine d'état après la validation? Même si les données ne sont pas valides, l'événement a été déclenché? Les données doivent-elles être vérifiées avant de déclencher l'événement ou dans le cadre d'une validation pendant que l'événement se produit? Veuillez montrer votre méthode de contrôleur et la méthode 'verify_payment_response' aussi. – spickermann
@spickermann Je reçois le payment_response de 2 sources. Un du navigateur client js et un autre d'un webhook directement de pg. Donc les deux je n'ai aucun contrôle. Je veux seulement appeler le 'verify_payment_response (data)' une seule fois. Donc, quelle que soit la réponse qui vient en premier sera utilisé pour 'verify_payment_response (data)'. De même, si la validation de la signature échoue pour une raison quelconque, la méthode 'verify_payment_response' fait un appel api (worker de fond) à payment_gateway pour vérifier directement l'état. Pour éviter que cela ne se produise deux fois, l'état payment_response_received a été ajouté – Abhilash
@spickermann le contrôleur a seulement cette clause @ dans le cas d'une clause if. La vérification_payment_response peut être invoquée par 2 méthodes (webhook & post request from js dans le navigateur client). Je ne sais pas lequel va tirer en premier. Mais quel que soit le premier, je veux l'utiliser. Donc, si l'état passe à payment_response_received, le second échouera et n'appellera pas encore verify_payment_response et c'est l'intention de cette approche. – Abhilash