其他用户设置的设计和CanCan角色? (Rails 4.0)

时间:2014-01-15 14:28:46

标签: ruby-on-rails devise cancan roles

我理解CanCan的相当基本的工作方式,并尝试遵循一些教程,但没有一个真正讨论如何在我的应用程序中分配用户角色。

此外,我希望我的应用程序允许用户将角色分配给其他用户。例如,我的用户可以创建项目,并将其他用户分配给项目团队。我目前正在使用角色模型来保留我的用户角色。

如何让用户专门将其他用户设置为该项目团队角色,他们可以在哪里管理项目?

1 个答案:

答案 0 :(得分:2)

您可以使用包含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>