【问题标题】:How can i allow user with admin role to edit the role of the other users?如何允许具有管理员角色的用户编辑其他用户的角色?
【发布时间】:2012-10-09 00:14:46
【问题描述】:

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

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

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

我该怎么做?

【问题讨论】:

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


    【解决方案1】:
    1. 您可以为用户模型添加角色属性。 然后,当用户进入管理仪表板时,您可以检查用户的角色。如果用户不是管理员,则重定向到另一个页面(使用before_filter :function

    2. 但是,您可以使用 gem cancan 代替手动执行所有操作,它非常流行且易于使用! 你可以在这里找到文档:GitHub 或者在 rails cast episodes 192

    基本上,它会创建一个能力模型,您将为用户声明权限,一个示例能力类

    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:如果我的英语太差,请见谅,谢谢:)

    【讨论】:

    • 他说他已经在使用 cancan 来分配角色...不确定这是否能回答他的问题...
    【解决方案2】:

    查看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
    

    【讨论】:

    猜你喜欢
    • 2016-12-17
    • 2019-04-02
    • 2014-07-06
    • 2018-04-29
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 2016-01-24
    相关资源
    最近更新 更多