gpt4 book ai didi

ruby-on-rails - 自下而上的 Rails 应用程序协会

转载 作者:行者123 更新时间:2023-12-02 03:51:51 26 4
gpt4 key购买 nike

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

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

谢谢

最佳答案

你看过the guide on associations吗? ?您是否做过模型域的任何类型的纸质原型(prototype)来阐明所有这些关联?这些是流程的重要部分,对于任何中等复杂的问题域来说,对于让事情顺利进行都很重要。

我可能会将 Contribution 上的 :contributor 关联设为 has_one 关联,而不是 belongs_to 但这可能是只是偏好。我也同意 Phobos98 Contributor 是与 User 不必要的区别。我认为 Contribution 是一个将用户操作与项目相关联的构思非常好的模型。大多数身份验证框架,如 Devise允许您指定角色和类似 cancan 的内容将允许您对权限进行细粒度控制。

就嵌套资源而言,这确实有所不同,只与您的应用如何提供其数据有关。这就像盖房子。你竖起墙,里面有人和元素,但窗口(路线)的数量控制着谁可以看到什么。是的,提供这些路由很有帮助,但在开始时不需要它们以确保数据模型就位。

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

关于ruby-on-rails - 自下而上的 Rails 应用程序协会,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14091860/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com