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