了解Rails 4中的after_update回调

时间:2017-04-09 19:09:44

标签: ruby-on-rails ruby-on-rails-4 callback

我有一个带有after_update回调的Rails对象,它将记录发送到队列。问题是我注意到有时队列的处理速度比对象实际更新的速度快。

我的问题:对象更新结束后是否after_update被调用,但是当它开始时?如果我想在> 更新成功后做什么,我需要什么回调?

2 个答案:

答案 0 :(得分:12)

在事务块中调用

after_saveafter_createafter_update,因此它们将在执行SQL语句之前执行。

如果您想在语句执行完成后执行某些操作,则应使用after_commit回调。

答案 1 :(得分:2)

如果您查阅Rails文档,您会发现很多可以使用的回调。这项工作的最佳选择可能是“after_commit”:

这直接来自Rails Docs(底部的链接)

3.1 Creating an Object

before_validation
after_validation
before_save
around_save
before_create
around_create
after_create
after_save
after_commit/after_rollback

3.2 Updating an Object

before_validation
after_validation
before_save
around_save
before_update
around_update
after_update
after_save
after_commit/after_rollback

3.3 Destroying an Object

before_destroy
around_destroy
after_destroy

Rails DOcs:http://guides.rubyonrails.org/active_record_callbacks.html