如何在Ruby on Rails应用程序中为公司和人员建模?

时间:2012-10-02 15:09:57

标签: ruby-on-rails ruby ruby-on-rails-3 database-design

我是Rails的新手,我正在尝试构建一个应用程序,其中一个用户可以有多个组织,其中可以包含许多人员反过来可以有很多项目

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

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

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

current_user.persons.projects

......尽管没有公司?

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

4 个答案:

答案 0 :(得分:1)

人与组织不是等级关系。它似乎是一个,但它不是。这是一张图。

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

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

这被称为Party模型,我建议你在开始之前阅读它。

答案 1 :(得分:0)

您想要使用

您的模型中的belongs_to和has_many。

请查看以下指南。

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

答案 2 :(得分:0)

通过关联,您可以设置一个结构,如ge0man在答案中所述。

使用validations,您可以确保在保存/更新之前模型具有所需的正确属性。

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

答案 3 :(得分:0)

  

现在我的关键问题是如果一个人不属于将会发生什么   任何公司都可以?我的申请是否仍然有用,我还会   能够访问项目,例如像......

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

Project.all