1

我是 Rails 的新手,我正在尝试构建一个应用程序,其中一个User可以拥有许多Organizations ,这些组织可以拥有很多Persons ,而这些组织又可以拥有很多Projects

这些是我的模型(这有意义吗?):

用户 ---< 公司 ---< 人员 ---< 项目

现在我的关键问题是,如果一个人根本不属于任何公司会发生什么?我的应用程序是否仍然可以工作,我是否仍然可以访问项目,例如像这样......

current_user.persons.projects

...尽管没有公司?

在 Rails 中建模这些表可能有一种相当简单的方法,但由于某种原因,我无法理解这一点。谢谢你的帮助。

4

4 回答 4

1

个人和组织不是等级关系。它看起来像一个,但它不是。这是一个图表。

一个组织可以有 0+ 个子组织。随着时间的推移,它可以拥有 0+ 名员工,并且一个人可以同时为多个组织工作。

您还可以向个人或组织出售或购买,因此您必须将它们建模为相同的超类型。

这被称为派对模式,我建议在你开始之前在这里阅读它。

于 2012-10-03T19:06:15.177 回答
0

您想研究使用

模型中的 belongs_to 和 has_many。

查看下面的本指南。

http://guides.rubyonrails.org/association_basics.html

于 2012-10-02T15:12:41.407 回答
0

使用关联,您可以设置结构,如 ge0man 的答案中所述。

通过验证,您可以确保模型在保存/更新之前具有所需的正确属性。

如果你不调用像 User.projects 这样的函数,它只会返回一个空数组,因为没有找到列出给该用户的项目:)

于 2012-10-02T15:13:56.383 回答
0

现在我的关键问题是,如果一个人根本不属于任何公司会发生什么?我的应用程序是否仍然可以工作,我是否仍然可以访问项目,例如像这样......

对您的关键问题的回答是:是的,任何用户都可以访问属于没有公司的人的项目,因此:

Project.all
于 2012-10-02T15:17:42.890 回答