【发布时间】:2012-10-09 00:14:46
【问题描述】:
我使用 devise 进行身份验证,只有管理员才能创建用户。
我使用 cancan 在用户创建期间为用户分配角色。
我希望管理员查看所有用户角色,并且管理员应该能够编辑用户的角色。
我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 roles
我使用 devise 进行身份验证,只有管理员才能创建用户。
我使用 cancan 在用户创建期间为用户分配角色。
我希望管理员查看所有用户角色,并且管理员应该能够编辑用户的角色。
我该怎么做?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-3 roles
您可以为用户模型添加角色属性。
然后,当用户进入管理仪表板时,您可以检查用户的角色。如果用户不是管理员,则重定向到另一个页面(使用before_filter :function)
但是,您可以使用 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:如果我的英语太差,请见谅,谢谢:)
【讨论】:
查看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
【讨论】: