将多个postgres模式合并为一个保留外键关系的单个模式的正确方法是什么?

问题描述 投票:0回答:1

[我们有一个基于Rails的SAAS平台,使用基于postgres模式的多租户和Apartment gem。不同的模式是相同的,在每个表中具有相同数量的表和相同的列。我们希望迁移到基于外键的多租户系统,在该系统中,我们希望将来自不同模式的所有记录合并到一个模式中,并用tenant_id标识每个记录。合并来自不同架构的所有记录并保留外键关系的正确方法是什么?

ruby-on-rails postgresql multi-tenant apartment-gem acts-as-tenant
1个回答
0
投票

这种情况需要注意。我认为(我可能是错的),最好的方法是在尝试迁移之前用该记录的tenant_id填充所有表中的original_idoriginal_id。本质上,这是要记录合并之前id的值。

合并后,您可以运行一个rake任务来重建关联。因此,如果您有...

id

您的迁移脚本将执行(迁移后)

class Foo
has_many :bars

您需要为每个关系做类似的事情,所以有点麻烦。

希望其他人会提出更好的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.