在遗留表的一对多关联中使用连接表

时间:2011-07-31 12:52:30

标签: ruby-on-rails associations

我正在尝试将rails应用程序与相关(并且非常狡猾和潮湿)的PHP应用程序结合,但两个应用程序共享一个数据库。到目前为止,它正在愉快地工作。我遇到过一个案例,我需要一个新模型和一个旧模型之间的一对多关系。通常我只是使用:

class LegacyModel < ActiveRecord::Base
  belongs_to :new_model
end

class NewModel < ActiveRecord::Base
  has_many :legacy_models
end

但是为了做到这一点,我最终不得不在遗留表中添加一列,而我宁愿不这样做;遗留应用程序非常脆弱,我真的不想冒险改变它的表格;只是在只读的意义上使用它们。所以我正在考虑使用new_model_id唯一且legacy_model_id不是唯一的联接表。这感觉就像我要离开Rails但我希望这种关联相当糟糕,所以我想知道是否:

1)这是一种可接受的方法吗?

2)还有更好的解决方案吗?

请注意,我的示例代码是伪代码,不具代表性。我只是想了解这个想法。

提前感谢您提供的任何帮助。

1 个答案:

答案 0 :(得分:2)

就我所见,这是一个非常好的方法。即使您尝试连接的模型是当前Rails应用程序的一部分,具有明确的连接表也有许多优点(例如能够 - 或者立即或稍后 - 添加更多列以便添加和捕获更多数据)。

我自己正在研究类似的东西,但我触摸的另一个数据库不是遗产,而是新的,除了我也只想以只读方式连接到它,所以我做了类似的连接表。这没什么不对!