修补或更新现有Rails Postgresql表中的外键(ID)

时间:2016-03-02 15:23:44

标签: ruby-on-rails postgresql foreign-keys duplicates associations

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来找到。

1 个答案:

答案 0 :(得分:0)

因此,Rails'Model.update_all(id: ...)方法为更新外键(或任何列)的方式(不确定是否有好方法)提供了一些很好的线索。如果我们有investors has_manytransactions transactions belongs_toinvestors表格的投资者模型和表格investorsname表格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)