Ruby on Rails与映射表的复杂关联

时间:2015-07-22 14:18:19

标签: ruby-on-rails ruby activerecord associations

我有以下型号:

MappingPlan(plan_id), UpgradeGroup(pug_id), Upgrade(pu_id), OptionGroup(pog_id), 和Option(po_id)。

他们的关系是Plan有很多UpgradeGroupUpgradeOptionGroupOptionUpgradeGroup属于Plan,有许多UpgradeOptionGroupOptionUpgrade属于UpgradeGroup,有许多OptionGroupOptionOptionGroup属于Upgrade且有许多Option。最后,Option属于OptionGroup

我正在使用我无法以任何方式更改的多个数据库,这组关联是我遇到的问题。 Mapping表包含有关如何匹配对象的以下详细信息。

Mapping database table

我已经使用正确的表名和主键设置了每个模型,但是我需要设置一个关联,我可以说plan.upgrade_groups并得到4个结果(带有pug_ids的对象:12,27,28 ,30),或plan.upgrade_group.first.upgrades并获得1个结果(pu_id:44)等。现在我就像plan.mappings#=>所有16个结果,其中Mapping模型为:

has_many :plans,
  foreign_key: "plan_id"

has_many :upgrade_groups,
  foreign_key: "pug_id"

has_many :upgrades,
  foreign_key: "pu_id"

has_many :option_groups,
  foreign_key: "pog_id"

has_many :options,
  foreign_key: "po_id"

0 个答案:

没有答案