0

目前我正在使用 Devise & CanCan,它允许我使用 (Roles_Users) 表创建具有角色的用户。

这很好,但我想要的是在我的应用程序中拥有项目,并且对于每个项目,用户可能拥有像(管理员、查看者等)IE 这样的角色,角色不是分配给用户,而是根据他们的项目分配给用户是其中的一员。

例子:

  • 用户 X 属于具有管理员角色的项目 A
  • 用户 X 属于具有访客角色的项目 B
  • 用户 Y 属于具有观察者角色的项目 B

什么样的模型会为此工作?

楷模

用户 has_many: 项目 项目 ? 角色?

Users_Roles_Projects (user_id, project_id, role_id)

你怎么看?我是一个新手,可以利用你们这些有经验的人的理解和思考。谢谢!

4

1 回答 1

1

你应该看看 has_many :through。这个 Railscast 应该让你启动并运行:http ://railscasts.com/episodes/47-two-many-to-many

例如,您可以通过 Memberships 拥有 User has_many Projects(我相信您可以想出一个更好的名称!)

您的 Users 模型将包含标准用户详细信息,Projects 模型将包含项目详细信息,并且大概您在某处有一些 Roles 模型(我没有使用您提到的任何一个库,因此我无法评论它们的工作方式)。关键是会员模型。

成员资格模型将包含用户 ID、项目 ID 和角色 ID。在数据库中,任何给定的 userID 和 projectID 配对都应该只有一个实例,因此通过将 roleID 存储在此配对旁边,您可以将角色分配给指定项目上的该用户。

于 2010-09-14T22:12:55.827 回答