加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails-3 – 当所有记录不同时,如何使用更新?

发布时间:2020-12-16 21:44:19 所属栏目:百科 来源:网络整理
导读:如何使用update_all,如果要更新一列30万条记录,全部具有各种不同的值? 我想做的是像: Model.update_all(:column = [2,33,94,32]).where(:id = [22974,22975,22976,22977]) 但不幸的是,这不行,对于30万条目更糟糕. 解决方法 从 ActiveRecord#update documen
如何使用update_all,如果要更新一列30万条记录,全部具有各种不同的值?

我想做的是像:

Model.update_all(:column => [2,33,94,32]).where(:id => [22974,22975,22976,22977])

但不幸的是,这不行,对于30万条目更糟糕.

解决方法

从 ActiveRecord#update documentation:
people = { 1 => { "first_name" => "David" },2 => { "first_name" => "Jeremy" } }
Person.update(people.keys,people.values)

所以在你的情况下:

updates = {22974 => {column: 2},22975 => {column: 33},22976 => {column: 94},22977 => {column: 32}}
Model.update(updates.keys,updates.values)

编辑:只是看看源码,这也是生成n个SQL查询,所以可能不是最好的解决方案

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读