回答
您正在尋找update_all
。 See doc。
請注意,這種方式不會引發回調。
這應該工作
Notification.all.each do |n| n.update_attribute(:email, true); end
編輯:做定製從布里克:
Notification.all.each { |n| n.update_attribute(:email, true) }
'Notification.all.each {| n | n.update_attribute(:email,true)}' - 分號不屬於Ruby。 ;) – bricker
'Notification.all.each {| n | n.update_attribute:email,true}' 也沒有額外的括號。 ;)(你也可以不用分號來使用'do ... end'形式,因爲'end'(幾乎)從不含糊:'Notification.all.each do | n | n.update_attribute:email,true end' - 但沒有語法突出顯示,這是不太可讀。) –
如果你有多個語句,你必須使用分號,我只是習慣了這種方式。 – cbron
您可以使用:
Notification.update_all(email: true)
如果您有任何的條件來更新你應該使用:
Notification.find_each { |n| n.email = (n.id > 100) ? true : false }
使用Something.all
對於大型數據庫表來說是個壞主意。
一些參考http://api.rubyonrails.org/classes/ActiveRecord/Batches.html – makhan
Notification.update_all(email: true)
是基本答案。
你不需要通過編寫自己的程序塊來「循環」本身:你可以讓主動記錄爲你做出辛苦的工作 - 這裏是一個你有一個ID數組的地方的例子,你想要更新他們的電子郵件(我基本上採取了直接從我的控制器之一本示例):
@notifications = Notification.where(id: [1,2,3,2,1,2]).update_all(email: true)
編輯:人們注意SQL注入不包括PARAMS [:notification_ids]在您的「這裏」方法與原字符串沒有逃脫或者你會遭受SQL注入攻擊;或者是安全的並使用散列。
- 1. Rails - 如何禁用所有控制檯日誌記錄?
- 2. Rails:更新控制器中的記錄
- 3. Rails如何更新所有記錄的列爲零的記錄?
- 4. 如何在Mongoid 5中將所有請求記錄到rails控制檯?
- 5. 使用軌道控制檯中的方法更新所有記錄
- 6. 更新elasticsearch中的所有記錄中的字段
- 7. 如何更新mongo控制檯中的日期字段?
- 8. 如何更新記錄在rails控制器
- 9. 如何在rails 3控制檯中着色記錄器輸出
- 10. Rails控制檯 - 刪除所有沒有任何關聯的記錄
- 11. 如何在插入或更新另一條記錄時更新所有記錄上的日期字段?
- 12. 在rails 4控制檯中,如何將所有sql活動記錄到文件中,但不記錄到控制檯輸出中?
- 13. Rails日誌記錄到控制檯
- 14. 如何儘快更新所有記錄?
- 15. 插入記錄到位置表中,不更新所有記錄位置字段
- 16. Rails的檢索中顯示控制器的所有記錄
- 17. 更新所有記錄的一個字段?
- 18. 如何在子表的記錄字段有值時更新字段?
- 19. MongoDB Java - 更新記錄中的字段
- 20. 表中所有記錄的Echo字段?
- 21. 在ruby控制檯中,如何通過控制檯中的父表將新記錄添加到相關表中?
- 22. 在控制檯行中的chrome中記錄的對象更改?
- 23. 如何查看整個Rails控制檯歷史記錄?
- 24. 如何從Rails控制檯反轉地理編碼記錄?
- 25. Mysql:更新最新記錄的字段
- 26. 更新MySQL中的所有記錄
- 27. SQL - 僅當所有記錄匹配時才更新字段
- 28. Dynamics CRM Web API - 分配記錄/更新所有者字段
- 29. 如何抑制在Rails的控制檯
- 30. 在rails中更新表中的記錄
謝謝,這是比循環遍歷每個元素更有效的方法。 – Ryan
@瑞安它更有效率,但缺乏回調使我很難選擇我的經驗。最常見的用例之一(除了在開發中清理數據等)是批量啓用/禁用實體。通常,這樣的數據更新值得通知您的用戶,我通常通過回調進行通知;) –