我有一些具有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 關注
- 613 瀏覽
添加回答
舉報
0/150
提交
取消