亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何避免運行ActiveRecord回調?

如何避免運行ActiveRecord回調?

婷婷同學_ 2019-10-15 10:04:55
我有一些具有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


查看完整回答
反對 回復 2019-10-15
  • 3 回答
  • 0 關注
  • 613 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號