Quelle est la différence entre `après créer " et "après enregistrer" et quand à utiliser?
Sont after_create
et after_save
les mêmes que pour la fonctionnalité?
Je veux faire une opération avec l'e-mail d'un utilisateur après sa création de compte.
Je veux faire cette opération quand elle est enregistrée dans la base de données.
, Qui est préférable d'utiliser: after_create
ou after_save
?
3 réponses
after_create
ne fonctionne qu'une seule fois - juste après la création de l'enregistrement.
after_save
fonctionne chaque fois que vous enregistrez l'objet-même si vous le mettez à jour plusieurs années plus tard
Donc, si vous voulez faire cette opération de messagerie seulement une fois (et plus jamais), utilisez after_create
.
Si vous voulez le faire tous les fois que l'objet est enregistré, puis le faire en after_save
À partir de les documents :
after_create()
Est appelé après
Base.save
sur les nouveaux objets qui n'ont pas a été enregistré (aucun enregistrement n'existe).
after_save()
Est appelé après
Base.save
(qu'il s'agisse d'une création ou mettre à jour Enregistrer).
after_save()
Fonctionne très bien lorsque vous devez enregistrer des modèles qui n'enregistrent pas très souvent. Pour cet exemple particulier de changement fréquent d'enregistrements, il serait conseillé d'utiliser
after_commit()
Assurez-vous que le modèle est enregistré dans la base de données avant l'exécution de l'action after_commit :calculate_credit_score
def calculate_credit_score
#Call a Cron job
end