在create上跳过after_save回调

时间:2018-01-14 08:21:27

标签: ruby-on-rails ruby-on-rails-5

我的模型中有一个after_save回调:

after_save :do_stuff

但是我希望Rails在我的模型的创建动作上忽略它,比如

after_save :do_stuff, skip: on_create

这样做的好方法是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用after_update回调。正如documentation所说:

  

在具有记录的现有对象的Base.save之后调用。

答案 1 :(得分:1)

您可以使用except试试这些:

after_save :do_stuff, except: :create

或者

use after_update

答案 2 :(得分:0)

在这种情况下 - 请勿使用after_save回调。

after_save的目的是在每次保存对象时运行,因此在创建对象时会调用它( - >因为它是第一次保存)并且当对象被保存时更新。

正如@JesusTinoco回答的那样,你应该使用after_update回调,只有当你更新对象时才会调用它。

after_update :do_stuff

(PS:还有after_create回调,只有在创建对象时才会调用它。)