【问题标题】:Devise and CanCan Roles Set By Other Users? (Rails 4.0)其他用户设置的 Devise 和 CanCan 角色? (导轨 4.0)
【发布时间】:2014-02-04 01:50:48
【问题描述】:
我了解 CanCan 的基本工作原理并尝试遵循一些教程,但没有一个真正讨论如何在我的应用程序中分配用户角色。
此外,我希望我的应用程序允许用户将角色分配给其他用户。例如,我的用户可以创建项目,并将其他用户分配给项目团队。我目前正在使用角色模型来保存我的用户角色。
我如何允许用户专门将另一个用户设置为该项目团队角色,以便他们可以管理项目?
【问题讨论】:
标签:
ruby-on-rails
devise
cancan
roles
【解决方案1】:
您可以使用带有 can_manage_projects 等字段的模型
class User < ActiveRecord::Base
has_many :roles
field :can_manage_projects, type: boolean
end
而且根据你的能力,你设置了一个权限通讯员……
class Ability
def initialize(user)
can :manage Project if user.can_manage_project?
end
end
因此,您可以随时使用该权限,例如:
class ProjectController
def assign_user(project, user)
project.users << user if can? :manage, Project
end
end
或
<body>
<% if can? :manage, Project %>
<%= link_to 'Assign selected user to Project', assign_user_project_path(project, user) %>
<% end %>
</body>