`after_create`和`after_save`有什么区别?何时使用哪个?

Swa*_*kar 121 ruby ruby-on-rails ruby-on-rails-3

after_createafter_save同为每个功能?

我希望在创建帐户后使用用户的电子邮件进行操作.

我希望在将其保存在数据库中时执行该操作.

最好使用: after_createafter_save

Tar*_*ast 209

after_create 只工作一次 - 就在首次创建记录之后.

after_save 每次保存对象时都会工作 - 即使您多年后才更新它

因此,如果您只想进行一次(然后再也不会)这样的电子邮件操作,那么请使用after_create.

如果您想在每次保存对象时执行此操作,请执行此操作after_save

  • 读者应该注意,[根据文档](https://api.rubyonrails.org/v5.1/classes/ActiveRecord/Relation.html#method-i-update_all),ActiveRecord的`update_all`不会调用任何回调,包括`after_*` (2认同)

Mic*_*ohl 92

来自文档:

after_create()

Base.save在尚未保存的新对象上调用 (不存在记录).

after_save()

被调用之后Base.save (无论是创建还是更新保存).