ActiveAdmin和CanCan

时间:2012-07-30 19:20:41

标签: ruby-on-rails activeadmin cancan

我正在使用Active Admin内的AdminUsers中的角色,并使用CanCan来定义跨不同资源的访问权限。

它在限制访问方面运行良好,但我在基于角色隐藏菜单时遇到了麻烦。

根据ActiveAdmin文档,以下内容应该有效:

menu :if => proc{ can?(:manage, AdminUser) }     

在我的ability.rb模型文件中,我有

case user.role      
  when "admin"
can :manage, :all
cannot :manage, Company
  when "manager"
    can :manage, Program
can :manage, Client

我甚至添加了不能:管理,管理员也在管理员之下,以便明确说明它。

当我以“经理”角色登录时,我正在尝试隐藏AdminUser菜单。目前,它仍然显示给该用户,但如果我点击它,它正确地告诉我,我没有被授权。

1 个答案:

答案 0 :(得分:0)

我想出来了。

我有两个菜单行如下:      menu:if => proc {can?(::manage,AdminUser)}      menu:label => “用户”

第二行搞砸了第一行,我修改为:

 menu :if => proc{ can?(:manage, AdminUser) }, :label => "Users"

它运作正常。