我是 Ruby on Rails 的新手,但遇到了这个有趣的情况:
我有三个模型:
- 用户
- 公司
- 项目
我想通过以下方式关联它们:
- 公司有_many用户
用户所属公司
通过USERS表中的company_id列实现
User.Company
或Company.Users
工作正常。
- 项目has_and_belongs_to_many用户
用户has_and_belongs_to_many项目
通过使用projetcs_users表中的has_and_belongs_to_many关系实现
Project.Users
或User.Projects
工作正常。
当我希望他们也按以下方式加入时,真正的问题来了:
- 公司属于所有者 (:通过 => 用户)
所有者has_one公司
---一个公司可以有多个所有者,但一个用户只能拥有一个公司。他不能同时拥有多家公司。
---用户可能是也可能不是公司的所有者,但始终属于某个公司。---一个用户不能同时属于两家公司。
项目has_one Project_manager (:through => User)
Project_manager属于_to项目
---一个项目只能有一个Project_manager,但一个可以是多个项目的项目经理。
我无法弄清楚应该如何在Models中定义关系。另外三个模型的表结构应该是什么。
我的目标是实现:
公司.所有者
可以通过以下方式完成:
@owner = User.find(Company.owner_id)
Project.Project_manager
可以通过以下方式完成:
@Project_manager = User.find(Project.project_manager_id)
但不希望它以这种方式工作!
休息对我来说非常好。