我有一个Contributor
模型和一个Resource
模型。在一个简单的世界中,我将进行以下设置:
class Resource
has_many :authorships
has_many :contributors, through: :authorships
end
class Contributor
has_many :authorships
has_many :resources, through: :authorships
end
但是,我的要求发生了变化。贡献者现在可以是资源的编辑者或资源的作者。AContributor
可以是Editor
一种资源的一种,也可以是Author
另一种资源的一种。所以看来我有两种方法来处理这个要求:
为我的连接模型添加某种
is_editor?
属性Authorships
并有效地注释每个关系。创建第二个连接模型 -
Editorship
:class Resource has_many :authorships has_many :editorships has_many :contributors, through: :authorships has_many :contributors, through: :editorships end class Contributor has_many :authorships has_many :editorships has_many :resources, through: :authorships has_many :resources, through: :editorships end
哪个是最明智的方法,还是我缺少另一种方法?