在rails中使用一个查询更新多行

时间:2013-12-10 23:55:16

标签: ruby-on-rails activerecord

以下Rails代码导致6个查询

people = { 1 => { "name" => "David" }, 2 => { "name" => "Jeremy" }, 3 => { "name" => "Tom" } }
Person.update(people.keys, people.values)

每个更新的行会执行两次查询。一次选择和一次更新。

有没有办法在只有一个查询(或只有两个查询)的Rails 4中执行相同的任务?

这里有一些关于如何在MySQL中执行此操作的信息,但不是Rails:  Multiple Updates in MySQL

感谢。

1 个答案:

答案 0 :(得分:6)

不,但不是因为@Sam D给出的原因。

这是因为如果你通过ActiveRecord,那是因为你想对正在更新的对象运行验证,回调等。没有为对象集合定义这些验证和回调。

你可能会说,“我不在乎他们是否跑步。”那没关系。这就是为什么rails让您能够直接通过SQL进行批量更新。

相关问题