我知道在 Rails 的情况下我们需要使用以下 sudo 代码
Parent.all.each do |parent|
parent.childrens.update_all(:price => parent.price)
end
但我有大约 500 万条家长记录,我知道这会花费很多时间。
是否有一种简单的方法可以通过 Rails 或 MySQL 以最快的方式(在单个查询中)完成上述操作
最佳答案
Parent.includes(:childrens).find_in_batches.find_in_batches do |group|
sleep(50)
group.each { |parent| parent.childrens.update_all(price: parent.price) }
end
这至少是你能想到的最好的rails..它也会避免n+1
,因为记录很大,find_in_batches
会帮助你,否则你的 db/dyno 可能会被锁定..
关于mysql - 将父模型属性复制到 mysql 或 Rails 中具有相同属性的所有子模型作为单个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44645674/