【发布时间】:2010-10-12 13:49:52
【问题描述】:
我有一些具有 after_save 回调的模型。通常这很好,但在某些情况下,例如在创建开发数据时,我想保存模型而不运行回调。有没有一种简单的方法可以做到这一点?类似于...
Person#save( :run_callbacks => false )
或
Person#save_without_callbacks
我查看了 Rails 文档并没有找到任何东西。然而,根据我的经验,Rails 文档并不总是能说明问题。
更新
我发现 a blog post 解释了如何从这样的模型中删除回调:
Foo.after_save.clear
我找不到该方法的记录位置,但它似乎有效。
【问题讨论】:
-
如果您在回调中执行破坏性或昂贵的操作(例如发送电子邮件),我建议您将其移出并与控制器或其他地方分开触发。这样您就不会在开发等过程中“意外”触发它。
-
您接受的解决方案对我不起作用。我正在使用 Rails 3。我收到如下错误:--undefined method `update_without_callbacks' for #<0x10ae9b848>0x10ae9b848>
标签: ruby-on-rails ruby rails-activerecord