0

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

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

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

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

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

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

我什至在 manager 下添加了 cannot :manage, AdminUser 以明确说明它。

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

4

1 回答 1

0

我想通了。

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

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

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

它工作正常。

于 2012-07-31T18:29:53.677 回答