我正在使用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菜单。目前,它仍然显示给该用户,但如果我点击它,它正确地告诉我,我没有被授权。
答案 0 :(得分:0)
我想出来了。
我有两个菜单行如下: menu:if => proc {can?(::manage,AdminUser)} menu:label => “用户”
第二行搞砸了第一行,我修改为:
menu :if => proc{ can?(:manage, AdminUser) }, :label => "Users"
它运作正常。