用户<>基于项目的角色

时间:2010-09-14 18:32:54

标签: ruby-on-rails activerecord ruby-on-rails-3 devise cancan

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

这很好,但我想要的是在我的应用程序中使用项目 每个项目,用户可能有一个角色(管理员,查看者, 等)IE,角色不是基于他们所属的项目分配给用户而是分配给用户。

示例:

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

什么样的模型适用于此?

模特

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

Users_Roles_Projects(user_id,project_id,role_id)

你怎么看?我是新手,可以使用理解和 从你这里思考经验丰富的人。谢谢!

1 个答案:

答案 0 :(得分:1)

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

例如,您可以通过会员资格获得用户has_many项目(我确信您可以提供更好的名称!)

您的用户模型将包含标准用户详细信息,项目模型将包含项目详细信息,并且可能您在某处有一些角色模型(我没有使用您提到的任何一个库,因此我无法对其进行评论他们是如何工作的)。关键是会员制模式。

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