使用ruby on rails在一个查询中更新多条记录



假设我有一个像这样的哈希数组

users_ar = [
{
id: 1,
name: 'Luke',
age: 19
},
{
id: 2,
name: 'Vader',
age: 44
},
{
id: 3,
name: 'Yoda',
age: 129
}
]

id是他们在User模型中的id。

我怎么能一次更新所有的记录在ruby on rails(如果我不需要验证记录)的性能原因,如果我有成千上万的记录更新?

我想通过id查找现有记录并更新姓名和年龄。我在找这样的东西:

users_to_update.update_all(users_ar)

我的rails版本是5.2.3,我使用MySQL。

Andreas谢谢,

activerecord-importgem可能是你需要的,如果你正在寻找做大量的性能良好的更新:https://github.com/zdennis/activerecord-import

MySQL:

INSERT INTO tbl
(id, name, age)
VALUES
(1, 'Luke', 19),
(2, 'Vader', 44),
(3, 'Yoda', 129)
ON DUPLICATE KEY UPDATE
name = VALUES(name),
age = VALUES(age);

虽然这看起来像"upsert",但这是我所知道的一次更新几行最快的方法。在您的示例中,所有行都已经存在(根据惟一的id),因此它继续更新每一行。

(不,我不知道这个在RoR中怎么说。bug提供的链接可以回答这个问题

最新更新