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

标签 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

谢谢。

最佳答案

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

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

你可能会说,“我不在乎他们是否会跑。”这很好。这就是 Rails 使您能够直接通过 SQL 进行大规模更新的原因。

关于ruby-on-rails - 在 rails 中使用一个查询更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20507850/

相关文章:

jquery - 使用 JQuery 获取 Rails 中隐藏字段的值

ruby-on-rails - 在 rails 应用程序上安全地保持 https ://secure. yourname.com 和 http ://www. yourname.com 之间的 session

ruby-on-rails - 在 ActiveSupport::Concern 模块中访问模型属性

ruby-on-rails - 如何按一天中的小时对记录计数进行分组

ruby-on-rails - 如何在 Rails 3 中获取数组元素

ruby-on-rails - 无法在生产中启动 Rails 控制台

mysql - Rails ActiveRecord 与数组连接

postgresql - 无法将 Padrino 连接到带有 activerecord 的 PostgreSQL 数据库

ruby-on-rails - ActiveRecord 默认索引

带有 ERB 标签的 JavaScript