Postgresql 9.5,Rails 4.2.4,Ruby 2.3.0
SlimMED-DOWN for downvote(太罗嗦了?)
我尝试使用activerecord-import等,同时批量导入数据并尊重关联并避免重复 - 无济于事。那么,我不想在导入过程中链接关联,而是想知道在导入之后是否可以这样做,即仅在现有记录上?
中心问题:有没有办法在表中使用junky,链接到无处外键(foreigntable_id)并使用其关联表的原始主键(id)更新/替换它们?
更新:噢,这可以通过调整Rails'update_all
生成的SQL来找到。
答案 0 :(得分:0)
因此,Rails'Model.update_all(id: ...)
方法为更新外键(或任何列)的方式(不确定是否有好方法)提供了一些很好的线索。如果我们有investors
has_many
和transactions
transactions
belongs_to
和investors
表格的投资者模型和表格investors
与name
表格transactions
相同的唯一inv_name
:
UPDATE transactions
SET investor_id = (SELECT investors.id FROM investors
WHERE investors.name = transactions.inv_name)
WHERE transactions.id IN (SELECT transactions.id FROM transactions)