回答
您正在寻找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. 更新elasticsearch中的所有记录中的字段
- 3. 如何更新mongo控制台中的日期字段?
- 4. 如何更新记录在rails控制器
- 5. 如何在rails 3控制台中着色记录器输出
- 6. 如何在插入或更新另一条记录时更新所有记录上的日期字段?
- 7. Rails日志记录到控制台
- 8. 如何尽快更新所有记录?
- 9. Rails的检索中显示控制器的所有记录
- 10. 更新所有记录的一个字段?
- 11. 表中所有记录的Echo字段?
- 12. 更新MySQL中的所有记录
- 13. 如何查看整个Rails控制台历史记录?
- 14. 在rails中更新表中的记录
- 15. 如何抑制在Rails的控制台
- 16. 使用select语句在表中更新所有记录的字段
- 17. Rails - 更新记录?
- 18. 在控制台中记录NSURLSession请求
- 19. jazz_hands gem在rails控制台中打破历史记录
- 20. 在Rails控制台中按日期查找记录
- 21. 如何在couchdb中更新文档记录/字段
- 22. 将记录从控制台
- 23. 如何检查控制器中的记录所有权?
- 24. 我如何在控制台中记录订阅内的结果?
- 25. 如何更新字段中的最大记录
- 26. 如何更新postgres中的updateAttributes的所有记录sequelize
- 27. 将所有stderr记录到文件和控制台
- 28. Qt控制台:将所有stdin和stdout记录到文件
- 29. 如何更新模型中的字段而不在django中创建新记录?
- 30. Clojure:更新记录字段的值
谢谢,这是比循环遍历每个元素更有效的方法。 – Ryan
@瑞安它更有效率,但缺乏回调使我很难选择我的经验。最常见的用例之一(除了在开发中清理数据等)是批量启用/禁用实体。通常,这样的数据更新值得通知您的用户,我通常通过回调进行通知;) –