如何使用ClassName.update跳过回调?

时间:2013-12-21 03:02:39

标签: ruby-on-rails ruby

我有一个模型“人物”,我通过以下方式更新它:

hash = {"id" => 1}
updatedHash = {"name" => "UPDATED_NAME"}

Person.update(hash["id"], updatedHash)

在我的Person模型中,我在更新时有一个回调:

after_commit :postUpdate, :on => :update
after_update :postUpdate #optionally I can have this, and exclude the above

如果我使用Person.update,如何停用此回调? (不要告诉我使用update_column或任何这些方法,因为我无法改变我更新的方式)。

我试过了:

Person.skip_callback(:update, :after_commit)

但它不起作用

1 个答案:

答案 0 :(得分:0)

我相信你需要做

Person.skip_callback(:update, :after_commit, :postUpdate)

或者调用要跳过的回调名称。

作为旁注。对于变量和函数名称,使用蛇案例而不是驼峰案例被认为是正确的。