【发布时间】:2011-10-26 02:21:16
【问题描述】:
我想知道如何定义一个能力等级并根据已登录的用户为该能力等级提供服务。
我正在使用 Active Admin、Can Can 和 Devise,并且我已经成功创建了一个 User 和一个 AdminUser 模型。
我有这个能力.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if (user)
can :manage, Item
end
end
end
现在我已经使用这个 wiki 条目来确定我们确实可以定义一个自定义能力文件并使用它来代替ability.rb:
https://github.com/ryanb/cancan/wiki/changing-defaults
但我想做的是,如果“非管理员用户”已登录,则能够使用 ability.rb,如果用户管理员已登录,则能够使用自定义 abilty。
附带问题:是否可以这样做,以便我不需要自定义的并且可以在一个能力.rb 文件中设置权限?
【问题讨论】:
-
啊,你是对的。我没有注意到您为 User 和 AdminUser 使用了单独的类。您应该能够更改 Active Admin 使用的类,但不是该系统的用户,我不确定它到底在哪里。可能应该检查你的初始化程序。
标签: ruby-on-rails ruby-on-rails-3 devise cancan activeadmin