我有以下Ability
:
can :manage, ActiveAdmin::Page, name: 'My Page'
它工作正常,但我想检查用户是否能够在不同页面中管理此ActiveAdmin::Page
。所以,当我使用以下内容时:
can? :manage, ActiveAdmin::Page, name: 'My Page'
它为任何页面返回true
,即使它不存在!
答案 0 :(得分:8)
代码
can? :manage, ActiveAdmin::Page, name: 'My Page'
检查当前用户是否可以管理其ActiveAdmin::Page
属性等于我的页面的name
实例。这正是您在能力文件中声明的条件,这就是它始终返回true
的原因。
如果您想知道用户是否可以访问特定页面(我认为您正在尝试这样做),您应该问“我可以管理此页面吗?”而不是“我可以管理名称为我的页面?”的页面。在前者中,您正在谈论特定页面,在后面您将讨论具有特定特征的页面。
为了询问CanCan当前用户是否可以访问特定页面,只需询问:
can? :manage, my_specific_page
其中my_specific_page
必须是ActiveAdmin::Page
的实例。
答案 1 :(得分:0)
最后,我想出了一种方法,它看起来很奇怪,因为它使用了 register_page ,但它正在运行:
can? :manage, (ActiveAdmin::register_page 'My Page')