Sind after_create
und after_save
gleich nach Funktionalität?
Ich möchte einen Vorgang mit der E-Mail eines Benutzers nach dessen Kontoerstellung ausführen.
Ich möchte diesen Vorgang ausführen, wenn er in der Datenbank gespeichert ist.
welches ist vorzuziehen zu verwenden: after_create
oder after_save
?
ruby-on-rails
ruby
ruby-on-rails-3
Swapnil Chincholkar
quelle
quelle
update_all
nicht invoke irgendwelche Rückrufe, darunterafter_*
Aus den Dokumenten :
quelle
Funktioniert gut, wenn Sie Modelle speichern müssen, die nicht sehr oft gespeichert werden. Für dieses spezielle Beispiel für häufiges Ändern von Datensätzen ist die Verwendung ratsam
Stellen Sie sicher, dass das Modell in der Datenbank gespeichert ist, bevor die Aktion nach_commit: berechne_Kredit_score ausgeführt wird
quelle
after_commit
, erklären aber nicht warum. Können Sie bitte näher darauf eingehen? Beachten Sie, dassafter_commit
beim Erstellen, Aktualisieren und Zerstören ausgeführt wird. Docs: apidock.com/rails/ActiveRecord/Transactions/ClassMethods/… Es ist also nicht dasselbe Verhalten, nach demafter_save
Sie diesen cron_job wirklich aufrufen möchten, nachdem Sie den Datensatz zerstört haben? Oder senden Sie im Fall ops eine E-Mail an einen jetzt gelöschten Benutzer? Seien Sie vorsichtig mitafter_commit
after_commit
wird für diese CRUD-Vorgänge ausgeführt. Wenn in seinem Fall die E-Mail häufig aktualisiert wird, ist es einfacher, die Aktion für einen bestimmten Rückruf zu kombinieren. In meinem Fall habe ichafter_commit : calculate_profile_update, on: :update