我正在使用 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 菜单。目前,它仍在向该用户显示它,但如果我点击它,它会正确地告诉我我没有被授权。