我有以下几点Ability
:
can :manage, ActiveAdmin::Page, name: 'My Page'
它工作正常,但我想检查用户是否有能力ActiveAdmin::Page
在不同的页面中管理它.所以,当我使用以下内容时:
can? :manage, ActiveAdmin::Page, name: 'My Page'
它返回true
任何页面,即使它不存在!
代码
can? :manage, ActiveAdmin::Page, name: 'My Page'
检查当前用户是否可以管理ActiveAdmin::Page
其name
属性等于My Page的实例.这正是你在你的能力文件中陈述的条件,这就是它总是返回的原因true
.
如果您想知道用户是否可以访问特定页面(我认为您正在尝试这样做),您应该问"我可以管理此页面吗?" 而不是"我可以管理一个名为My Page?的页面 ".在前者中,您正在谈论特定页面,在后面您将讨论具有特定特征的页面.
为了询问CanCan当前用户是否可以访问特定页面,只需询问:
can? :manage, my_specific_page
其中my_specific_page
必须的一个实例ActiveAdmin::Page
.