我的小组正在为我们的课程制作项目管理系统,我的工作是当用户登录时,他们看到他们所属的项目,以及列出的项目都有成员该项目的当前成员名单。
(以后还需要添加/删除成员函数)
我的问题是,由于该组的其余部分已经设置了以便项目属于用户,是否可以让用户属于项目以便设置此成员列表并执行我所做的事情。在说什么?
答案 0 :(得分:1)
您所描述的关系不是一对一的:
当用户登录时,他们会看到项目,他们是
的一部分
这意味着用户可以拥有多个项目。你还指定了:
[项目有]该项目的当前成员列表
这意味着一个项目可以有多个用户。
总之,您需要在用户和项目模型之间建立多对多关系。
这是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
,它可以让你对连接表有更多的控制权。 (例如:在role
表格中添加UserProject
列,其中包含project_creator
或simple_member
等数据UserProject
模型可以命名为Membership
更明确。我使用了两种型号&#39;要生成UserProject
的名称,就像我们在Rails&#39;中所做的那样。命名惯例。