【发布时间】:2015-11-24 19:26:36
【问题描述】:
我的小组正在为我们的课程制作一个项目管理系统,我的工作是当用户登录时,他们会看到他们参与的项目,并且列出的项目有一个当前成员的成员列表那个项目。
(以后还需要添加/删除成员函数)
我的问题是,由于该组的其他成员已经将其设置为项目属于用户,是否可以让用户属于项目以便设置此成员列表并执行我正在谈论的事情?
【问题讨论】:
标签: ruby-on-rails ruby
我的小组正在为我们的课程制作一个项目管理系统,我的工作是当用户登录时,他们会看到他们参与的项目,并且列出的项目有一个当前成员的成员列表那个项目。
(以后还需要添加/删除成员函数)
我的问题是,由于该组的其他成员已经将其设置为项目属于用户,是否可以让用户属于项目以便设置此成员列表并执行我正在谈论的事情?
【问题讨论】:
标签: ruby-on-rails ruby
您所描述的关系不是一对一的:
当用户登录时,他们会看到他们所属的项目
这意味着一个用户可以拥有多个项目。您还指定:
[项目有]该项目的当前成员列表
这意味着一个项目可以有多个用户。
总之,您的用户模型和项目模型之间需要多对多关系。
这是 Rails 中基本的多对多关系:
class User < ActiveRecord::Base
has_many :user_projects
has_many :projects, through: :user_projects
class Project < ActiveRecord::Base
has_many :user_projects
has_many :users, through: :user_projects
class UserProject < ActiveRecord::Base
belongs_to :user
belongs_to :project
validates :user_id, :project_id, presence: true
UserProject 模型是一个连接表。我在代码中所做的是明确的has_and_belongs_to_many,它让您可以更好地控制连接表。 (示例:在UserProject 表中添加role 列,包含project_creator 或simple_member 等数据)UserProject 模型可以命名为Membership 更明确。我使用这两个模型的名称来制作UserProject,就像我们通常在 Rails 的命名约定中所做的那样。【讨论】:
has_many :user_projects(见我的代码)。请参阅此链接和图像,它很好地说明了多对多关系guides.rubyonrails.org/…