[我们有一个基于Rails的SAAS平台,使用基于postgres模式的多租户和Apartment gem。不同的模式是相同的,在每个表中具有相同数量的表和相同的列。我们希望迁移到基于外键的多租户系统,在该系统中,我们希望将来自不同模式的所有记录合并到一个模式中,并用tenant_id标识每个记录。合并来自不同架构的所有记录并保留外键关系的正确方法是什么?
这种情况需要注意。我认为(我可能是错的),最好的方法是在尝试迁移之前用该记录的tenant_id
填充所有表中的original_id
和original_id
。本质上,这是要记录合并之前id
的值。
合并后,您可以运行一个rake任务来重建关联。因此,如果您有...
id
您的迁移脚本将执行(迁移后)
class Foo
has_many :bars
您需要为每个关系做类似的事情,所以有点麻烦。
希望其他人会提出更好的解决方案。