如何允许具有管理员角色的用户编辑其他用户的角色?

时间:2012-10-18 13:52:53

标签: ruby-on-rails ruby-on-rails-3 roles

我使用devise进行身份验证,只有管理员可以创建用户。

我使用cancan在用户创建期间为用户分配角色。

我希望管理员查看所有用户角色,管理员应该能够编辑用户的角色。

我该怎么做?

2 个答案:

答案 0 :(得分:1)

结帐https://github.com/marklocklear/devise_multi_tentant。在ability.rb我有......

class Ability
  include CanCan::Ability

  def initialize(user)
    can :manage, :all if user.role == "admin"
  end
end

答案 1 :(得分:0)

  1. 您可以为用户模型添加角色属性。 然后,当用户转到管理仪表板时,您可以检查用户的角色。如果用户不是管理员,请重定向到其他页面(使用before_filter :function

  2. 但是,相反,手动完成所有操作,您可以使用gem cancan,它非常受欢迎且易于使用! 您可以在此处找到该文档:GitHub 或者在rails episodes 192

  3. 基本上,它会创建一个能力模型,你将为用户声明一个特权能力类

    class Ability
    
      include CanCan::Ability
    
      def initialize(user)
        user ||= User.new # guest user (not logged in)
        if user.admin?
          can :update, User
        end
     end
    end
    

    之后,您可以为操作,控制器或视图中的用户授权,例如示例see this link

    PS:对不起,如果我的英语太差了,谢谢:)

相关问题