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