В чем разница между `after_create` и` after_save` и когда использовать?
Являются ли after_create
и after_save
такими же, как для каждой функциональности?
Я хочу выполнить операцию с электронной почтой пользователя после создания учетной записи.
Я хочу выполнить эту операцию, когда она будет сохранена в базе данных.
который предпочтительнее использовать: after_create
или after_save
?
Ответы
Ответ 1
after_create
работает только один раз - сразу после создания записи.
after_save
работает каждый раз, когда вы сохраняете объект - даже если вы просто обновляете его много лет спустя
Итак, если вы хотите выполнить эту операцию электронной почты только один раз (а затем никогда больше), используйте after_create
.
Если вы хотите делать это каждый раз, когда объект сохраняется, то сделайте это в after_save
Ответ 2
От документы:
after_create()
Вызывается после Base.save
для новых объектов, которые не (запись не существует).
after_save()
Вызывается после Base.save
(независимо от того, является ли это созданием или сохранить обновление).
Ответ 3
after_save()
Прекрасно работает, когда вам нужно сохранять модели, которые не сохраняются очень часто.
Для этого конкретного примера часто изменяющихся записей было бы целесообразно использовать
after_commit()
убедитесь, что модель сохранена в базе данных до того, как действие выполнено after_commit: calculate_credit_score
def calculate_credit_score
#Call a Cron job
end