gpt4 book ai didi

ruby-on-rails - 在 rails 中一次更新多条记录

转载 作者:行者123 更新时间:2023-12-03 10:21:23 25 4
gpt4 key购买 nike

在我正在构建的 rails 2 应用程序中,我需要更新具有特定属性的记录集合。我有一个命名范围来查找集合,但我必须遍历每条记录以更新属性。与其进行一次查询来更新数千条记录,不如进行数千次查询。

到目前为止我发现的是类似 Model.find_by_sql("UPDATE products ...)
这感觉真的很初级,但我用谷歌搜索并环顾四周,但没有找到我的答案。

为了清楚起见,我所拥有的是:

ps = Product.last_day_of_freshness
ps.each { |p| p.update_attributes(:stale => true) }

我想要的是:
Product.last_day_of_freshness.update_attributes(:stale => true)

最佳答案

听起来您正在寻找 ActiveRecord::Base.update_all - 来自文档:

Updates all records with details given if they match a set of conditions supplied, limits and order can also be supplied. This method constructs a single SQL UPDATE statement and sends it straight to the database. It does not instantiate the involved models and it does not trigger Active Record callbacks or validations.


Product.last_day_of_freshness.update_all(:stale => true)

实际上,由于这是 rails 2.x(您没有指定)-named_scope 链接可能不起作用,您可能需要将命名范围的条件作为第二个参数传递给 update_all,而不是将其链接到末尾产品范围。

关于ruby-on-rails - 在 rails 中一次更新多条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5394699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com