2012-07-30 50 views
0

我利用Active Admin内AdminUsers中的角色,并使用CanCan定义跨不同资源的访问。ActiveAdmin和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 

我甚至增加不能:管理,管理用户下的经理以便明确说明它。

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

回答

0

我想通了。

我有两个菜单行如下: 菜单:如果=> PROC {可以?(:管理,管理用户)} 菜单:标签=> “用户”

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

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

它工作正常。