【问题标题】:Ruby on rails: Update multiple records in railsRuby on rails:更新rails中的多条记录
【发布时间】:2023-03-28 16:14:01
【问题描述】:

假设我有如下的哈希值。可以使用“update”来更新所有记录,如下所示。

 people = { 1 => { "first_name" => "David", "last_name" => "Freeman" }, 2 => { "first_name" => "Jeremy", "last_name" => "Stone" } .....}

 Person.update(people.keys, people.values)

这将为每条记录运行一个 UPDATE 查询。如何使用“update_all”来实现对所有记录运行单个查询的目的?

参考 (this) 但找不到解决方案。

提前致谢。

【问题讨论】:

  • @SRack 如果我需要更新一些参数并为每条记录使用不同的值,我无法弄清楚参数应该是什么。
  • 一个普通的 SQL 查询在您尝试使用 ActiveRecord 构建的情况下如何?
  • @spickermann 在重复密钥更新 first_name= 时插入 person(id,first_name,last_name) 值 (1,"David","Freeman"), (2,"Jeremy","Stone")值(名字),姓氏=值(姓氏);

标签: sql ruby-on-rails ruby


【解决方案1】:

我认为这是不可能的。这不是“update_all”的本质。想象一下,为您需要的结果编写一个 SQL 查询,它将涉及匹配每个 id,然后为每个 id 执行所需的更新,从而将其与“update_all”的作用进行对比。

在对一组元组执行相同更新时,您应该使用“update_all”,但显然在您的情况下,每个元组的 first_name 和 last_name 是不同的。

考虑到 id 已编入索引,我认为仅使用“更新”不会对性能产生太大影响。但是,您始终可以选择编写本机 SQL 语句。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-14
    • 2017-01-03
    • 1970-01-01
    • 2021-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多