我在三种不同的方式来实现has_many
直通关系之间来回切换,我需要一些帮助来决定哪种方式最好。
在基本层面上,我有Contributor
保存个人详细信息的Project
模型,并且我有一个贡献者可以贡献的模型。他们可以通过多种不同的方式做出贡献;aContributor
可以是编辑、作者、作曲家、研究员等。贡献者可以以多种方式为同一人做出贡献Project
(例如,他们可以是作曲家和编辑),并且他们可以为多个Projects
.
所以我建立了一个名为Contributorship
. 我的问题是下一步该怎么做。据我所知,我有三个选择:
添加一个包含贡献类型的
contribution_type
属性(来自预定义的枚举)。Contributorship
当我建立 和 之间的关系时Contributor
,Project
我将其设置为适当的值。在 上创建多个
has_many through
关系Project
,每种类型的贡献一个。每个仍然解析为 aContributor
,但在 上使用不同的外键Contributorship
。抛弃
Contributorship
并用多个连接模型替换它 -Editor
等等Author
,它们都解析为Contributors
.