ruby-on-rails - before_load - rails on update




Présentation du rappel after_update dans Rails 4 (2)

J'ai un objet Rails avec callback after_update qui envoie un enregistrement à une file d'attente. Et le problème est que j'ai remarqué que la file d'attente est parfois traitée plus rapidement que l'objet n'est en cours de mise à jour.

Ma question: est-ce que after_update est appelé après la fin de la mise à jour de l'objet, mais quand cela a commencé? Quel rappel ai-je besoin si je veux faire quelque chose avec elle seulement après la mise à jour réussie?


Si vous consultez la documentation de Rails, vous trouverez beaucoup de rappels que vous pouvez utiliser. Le meilleur pour ce travail pourrait être "after_commit":

Cela vient directement des Rails Docs (lien en bas)

3.1 Creating an Object

before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback

3.2 Updating an Object

before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
after_commit/after_rollback

3.3 Destroying an Object

before_destroy
around_destroy
after_destroy

Rails DOcs: http://guides.rubyonrails.org/active_record_callbacks.html


after_save , after_create , after_update sont appelés dans le bloc de transaction, ils seront donc exécutés avant l'exécution de l'instruction SQL.

Si vous voulez faire quelque chose lorsque l'exécution de l'instruction est terminée, vous devez utiliser le rappel after_commit .





callback