Ruby on Rails 中的模型关系

2024-03-02

我正在 Rails 3 中开发一个新应用程序,但我不确定如何建立模型之间的关系。

基本上我有一个model User and a model Project。用户可以创建项目,成为项目所有者。但除项目所有者之外的任何其他用户也可以加入该项目,但作为团队成员。

我需要为这种团队关系创建一个新模型吗?这一切之间的关系又会如何呢?

提前致谢。


我正在对具有共享权限的照片库执行类似的操作。这是我给出的大致结构(尽管这是改编自另一个项目,因此可能不完全正确)。

class User
  has_many :projects, :foreign_key => "owner_id"
  has_many :project_memberships, :foreign_key => "member_id"
  has_many :shared_projects, :class_name => "Project", :through => :project_memberships, :foreign_key => "member_id"
end

class ProjectMembership
  belongs_to :member, :class_name => 'User'
  belongs_to :project
end

class Project
  belongs_to :owner, :class_name => "User"
  has_many :project_memberships
  has_many :members, :class_name => "User", :through => "project_memberships", :foreign_key => "member_id"
end

基本上,这允许项目同时拥有作为用户的所有者和一堆也是用户的其他成员,并且可以单独访问它们。这些是相关的,使用has_many :through关系,我们基本上给出了一个比默认名称更有意义的名称has_many :users会给我们。

这也使个人成员能够通过创建新的项目来加入项目project_membership该项目的对象,同时仍然保持单一所有者。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails 中的模型关系 的相关文章

随机推荐