gpt4 book ai didi

ruby-on-rails - 复制 ActiveRecord 记录并维护所有关系

转载 作者:行者123 更新时间:2023-11-29 13:06:07 27 4
gpt4 key购买 nike

我的难题是,出于遗留原因,我需要为表中的所有记录重新分配一个新 ID,但该表已经与不同模型建立了很多关系,这些关系取决于它是否具有旧 ID。我想想出一个重新分配 id 并维护所有关系的好方法,但我自己没有运气。任何建议表示赞赏。

谢谢

最佳答案

此解决方案假定外键列名称在所有表中始终相同。它遍历所有表并将旧 ID 更改为新 ID。

model_id = "model_id" #foreign key name for that model
old_id = ... #model old id
new_id = ... #model new id

models = ActiveRecord::Base.send(:descendants)
for m in models do
if m.column_names.include(model_id)
m.where("#{model_id} = ?", old_id).update_all(model_id => new_id)
end
end

编辑

您还可以在模型上使用 reflect_on_all_associations,遍历所有 has_many 关系并更改外键。

关于ruby-on-rails - 复制 ActiveRecord 记录并维护所有关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11324810/

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