gpt4 book ai didi

ruby-on-rails - Rails 4 update_all 并从另一个字段设置值

转载 作者:行者123 更新时间:2023-12-04 13:59:15 25 4
gpt4 key购买 nike

我需要在某些模型中进行一些批量更新,并将一个字段的值设置为另一个字段的值。

现在我可以用这样的原始 sql 做到这一点:

ActiveRecord::Base.connection.execute("UPDATE `deleted_contents` SET `deleted_contents`.`original_id` = `deleted_contents`.`id` WHERE `deleted_contents`.`original_id` is NULL")

这工作正常,但是由于许多原因,我需要使用 ActiveRecord 查询接口(interface)来执行此操作。
我试过:
DeletedContent.where(original_id: nil).update_all(original_id: value_of_id_column)

对于 value_of_id_column 我尝试了:id,self.id, id等,没有任何作用。我应该为 value_of_id_column 设置什么来获取由 rails 生成的原始查询?这是可能的,还是使用原始 sql 是唯一的解决方案?

此外,我不想遍历每条记录并进行更新。这对我来说不是一个有效的解决方案:
DeletedContent.where(original_id: nil).each do |deleted_content|
update_each_record
end

最佳答案

我很确定您无法通过将哈希传递给 update_all 来获取该查询。

最接近您想要获得的是:

DeletedContent.where(original_id: nil).update_all("original_id = id")

关于ruby-on-rails - Rails 4 update_all 并从另一个字段设置值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31892055/

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