【发布时间】:2012-12-30 15:16:12
【问题描述】:
我正在自下而上构建一个 Rails 应用程序,需要一些关于模型关联的指导。
我们有客户并让他们参与多个项目。 客户的用户(他们的员工)从事项目工作并通过文件和注释为项目做出贡献。 我们还与客户合作开展项目(添加文件、注释)。 项目有贡献者(可能是另一个客户的一部分的用户或分包商)做出贡献(文件、注释)。
因此,在模型方面,我想确保正确捕捉所有内容。这就是我所拥有的,但我不确定它是否可以,并且对其他协会持开放态度。
Client
has_many :projects
has_many :users
Project
belongs_to :client
has_and_belongs_to_many :contributors
has_and_belongs_to_many :contributions
User
belongs_to :client
belongs_to :contributor
has_many :contributions
Contributor
has_and_belongs_to_many :projects
has_one :user
has_many :contributions
Contribution
has_and_belongs_to_many :projects
belongs_to :contributor
我认为贡献将与文件和笔记的模型相关联;项目可能与“下一步”模型相关联......我认为都是嵌套资源。
谢谢
【问题讨论】:
-
拆分用户和贡献者模型的目的是什么?为什么不能是一个模型?
-
有时来自一个客户的用户可能会为另一个客户的项目做出贡献,或者用户可能无法访问一个项目... 想法是以项目为基础存储贡献者。不是用户,而是用户的参考(可能是连接表)。不必要?谢谢。
标签: ruby-on-rails model associations