Czy after_create
i after_save
takie same jak w przypadku funkcji?
Chcę wykonać operację na e-mailu użytkownika po utworzeniu jego konta.
Chcę wykonać tę operację, gdy jest zapisana w bazie danych.
który jest lepszy w użyciu: after_create
lub after_save
?
ruby-on-rails
ruby
ruby-on-rails-3
Swapnil Chincholkar
źródło
źródło
update_all
nie wywołuje żadnych wywołań zwrotnych, w tymafter_*
Z dokumentów :
źródło
Działa dobrze, gdy musisz zapisywać modele, które nie zapisują zbyt często. W tym konkretnym przykładzie częstej zmiany rekordów byłoby wskazane użycie
upewnij się, że model został zapisany w bazie danych przed wykonaniem akcji after_commit: oblicz_kredyt_punkt
źródło
after_commit
ale nie wyjaśniaj dlaczego. Czy możesz to rozwinąć? Zauważ, żeafter_commit
działa przy tworzeniu, aktualizowaniu i niszczeniu. Dokumenty: apidock.com/rails/ActiveRecord/Transactions/ClassMethods/… Więc to nie jest to samo zachowanie, coafter_save
naprawdę chcesz wywołać to cron_job po zniszczeniu rekordu? Czy w przypadku operacji wysłać wiadomość e-mail do usuniętego użytkownika? Uważaj z używaniemafter_commit
after_commit
działa na tych operacjach CRUD, więc jeśli w jego przypadku wiadomość e-mail jest często aktualizowana, łatwiej byłoby połączyć akcję dla konkretnego wywołania zwrotnego. W moim przypadku użyłemafter_commit : calculate_profile_update, on: :update