I've the following Ability
:
can :manage, ActiveAdmin::Page, name: 'My Page'
And it is working fine, but I want to check if the user has the ability to manage this ActiveAdmin::Page
in different pages. So, when I used the following:
can? :manage, ActiveAdmin::Page, name: 'My Page'
It returned true
for any page even if it does not exist!
The code
can? :manage, ActiveAdmin::Page, name: 'My Page'
checks if the current user can manage an instance of ActiveAdmin::Page
whose name
attribute is equal to My Page. That is exactly the condition you stated in your abilities file, and that is why it always returns true
.
In case you want to know if a user can or cannot access a specific page (which is what I think you are trying to do) you should ask "can I manage this page?" instead of "can I manage a page whose name is My Page?". In the former you are talking about a specific page, and in the later you are talking about pages with a certain characteristic.
In order to ask CanCan whether the current user can access a specific page, just ask:
can? :manage, my_specific_page
where my_specific_page
needs to be an instance of ActiveAdmin::Page
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With