3

我正在自下而上构建一个 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

我认为贡献将与文件和笔记的模型相关联;项目可能与“下一步”模型相关联......我认为都是嵌套资源。

谢谢

4

1 回答 1

1

您是否查看过协会指南?您是否做过任何类型的模型域的纸质原型来阐明所有这些关联?这些是过程的重要部分,对于任何中等复杂的问题域来说,对于让事情顺利进行都很重要。

我可能会在:contributor关联上Contribution建立has_one关联,而不是belongs_to但这可能只是偏好。我也同意Phobos98与. 我认为这是一个将用户操作与项目相关联的非常好的模型。大多数像Devise这样的身份验证框架都允许您指定角色,而像cancan这样的框架可以让您对权限进行细粒度的控制。ContributorUserContribution

就嵌套资源而言,这确实与您的应用程序如何使其数据可用有关。就像盖房子一样。你把墙竖起来,里面有人和财物,但窗户(路线)的数量决定了谁可以看到什么。是的,让这些路线可用是有帮助的,但一开始并不需要它们以确保数据模型到位。

您是否真的尝试过这里的模型并查看它是否有效?使用脚手架,您可以快速尝试,Rails 使更改数据模型变得轻而易举,因此您没有理由不能更灵活一点。只需尝试一下,找出哪些有效,哪些无效。然后,您将知道需要更改的内容。

于 2012-12-30T16:50:11.997 回答