我有以下型号:
Mapping
,
Plan
(plan_id),
UpgradeGroup
(pug_id),
Upgrade
(pu_id),
OptionGroup
(pog_id),
和Option
(po_id)。
他们的关系是Plan
有很多UpgradeGroup
,Upgrade
,OptionGroup
和Option
。 UpgradeGroup
属于Plan
,有许多Upgrade
,OptionGroup
和Option
。 Upgrade
属于UpgradeGroup
,有许多OptionGroup
和Option
。 OptionGroup
属于Upgrade
且有许多Option
。最后,Option
属于OptionGroup
。
我正在使用我无法以任何方式更改的多个数据库,这组关联是我遇到的问题。 Mapping
表包含有关如何匹配对象的以下详细信息。
我已经使用正确的表名和主键设置了每个模型,但是我需要设置一个关联,我可以说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"