我有一些具有after_save回调的模型。通常这很好,但是在某些情况下,例如在创建开发数据时,我想保存模型而不运行回调。有没有简单的方法可以做到这一点?类似于...Person#save( :run_callbacks => false )要么Person#save_without_callbacks我查看了Rails文档,没有找到任何东西。但是,以我的经验,Rails文档并不总能讲述整个故事。更新我找到了一篇博客文章,解释了如何从这样的模型中删除回调:Foo.after_save.clear我找不到该方法的文档记录,但似乎可行。
3 回答
富国沪深
TA贡献1790条经验 获得超9个赞
#Rails >= v3.1 only
@person.update_column(:some_attribute, 'value')
#Rails >= v4.0 only
@person.update_columns(attributes)
我的原始答案:
在Rails3中,
假设我们有一个类定义:
class User < ActiveRecord::Base
after_save :generate_nick_name
end
方法1:
User.send(:create_without_callbacks)
User.send(:update_without_callbacks)
方法2:如果要在rspec文件或任何其他文件中跳过它们,请尝试以下操作:
User.skip_callback(:save, :after, :generate_nick_name)
User.create!()
注意:完成此操作后,如果您不在rspec环境中,则应重置回调:
User.set_callback(:save, :after, :generate_nick_name)
在轨道上对我很好3.0.5
- 3 回答
- 0 关注
- 572 浏览
添加回答
举报
0/150
提交
取消