我需要在我的应用中关联。
User has many role,
Project has many user,
user1:项目1&经理项目2的员工
我不知道如何设置这些表和模型之间的关系。
用户,角色和项目
我该如何设置?
非常感谢你的建议。
答案 0 :(得分:0)
您需要做的只是使用一些宝石。
然后创建project
模型+控制器+视图。
创建新用户 - User.create(email: "user1@example.com", password: "123123")
为新创建的用户添加角色 - User.last.add_role(:manager)
创建另一个用户 - User.create(email: "user2@example.com", password: "123123")
为新创建的用户添加角色 - User.last.add_role(:employee)
现在,如果您正确执行所有步骤,则创建一个新项目:
user1_project = User.find(1).projects.new(project_params)
它将为具有经理角色的电子邮件 user1@eaxmple.com 的用户创建一个项目。
答案 1 :(得分:0)
你可以做这样的事情,
创建表调用角色并为每个role_type提供唯一ID,例如
1为经理,2为员工,3为业主等。 并创建另一个包含以下字段的表,
USER_ID,ROLE_ID,PROJECT_ID
因此,如果user1是project1的经理,那么我们将有一个带有以下条目的条目
user_id = 1,role_id = 1,project_id = 1
和user1是project2的员工将有一个条目,
user_id = 1,role_id = 2,project_id = 2
此处role_id 1和2分别对应经理和员工。
答案 2 :(得分:0)
如果您询问如何将关系添加到表中。
这是一个例子
让我们说
Users -> user1, user2
Roles -> Role1, Role2
Projects -> P1, P2
Users -> Roles ( foreign key relationship ) users depends on Roles
Roles -> Projects ( foreign key relationship ) Roles depends on Projects
这里让我们将项目视为角色可以访问它们的资源
Users -> Roles -> Projects
角色可以拥有P1的读取权限和P2等的读写权限
答案 3 :(得分:0)
您可以实现此设置Rolify gem。
class User < ActiveRecord::Base
rolify
end
class Project < ActiveRecord::Base
resourcify
end
现在,您可以通过指定特定项目对象或Project类或不使用这些角色来向用户对象添加多个角色。例如:
user = User.create(user_params)
project_1 = Project.create(project_params)
project_1 = Project.create(project_params)
# Add roles with respect to specific project object
user.add_role('manager', project_1)
user.add_role('employee', project_2)
请仔细阅读rolify documentation以获取详细的概述和使用示例。