3
根據Rails的文檔here和here,使用update_all
不執行以下操作 -當使用`運行驗證update_all`
- 它將跳過驗證
- 它不更新
updated_at
場 - 它默默地忽略了
:limit
和:order
方法
我正在嘗試通過我的代碼庫並刪除update_all
的實例,特別是因爲第一點。
有沒有辦法仍然有update_all
的便利,仍然運行驗證?我明白,我可以通過每個記錄循環,並保存它,而是因爲它執行ňSQL語句,而不是1
# before
User.where(status: "active").update_all(status: "inactive")
# after
User.where(status: "active").each { |u| u.update(status: "inactive") }
感謝那些看起來並不只是混亂也更效率越低!
編輯:我使用Rails 4.2
你可能想看看[批次](http://api.rubyonrails.org/classes/ActiveRecord/Batches.html) –