2017-01-25 1 views

Répondre

0

Enfin, je me suis un moyen, il semble bizarre car il utilise register_page mais il travaille:

can? :manage, (ActiveAdmin::register_page 'My Page') 
8

Le code

can? :manage, ActiveAdmin::Page, name: 'My Page' 

vérifie si l'utilisateur actuel peut gérer une instance de ActiveAdmin::Page dont name attribut est égal à Ma page. C'est exactement la condition que vous avez indiquée dans votre fichier de capacités, et c'est pourquoi il renvoie toujours true. Si vous voulez savoir si un utilisateur peut ou ne peut pas accéder à une page spécifique (ce que je pense que vous essayez de faire), vous devriez demander "puis-je gérer cette page?" au lieu de "puis-je gérer une page dont le nom est Ma page?". Dans le premier cas, vous parlez d'une page spécifique, et plus tard, vous parlez de pages avec une certaine caractéristique.

Afin de demander CanCan si l'utilisateur actuel peut accéder à une page spécifique, il suffit de demander:

can? :manage, my_specific_page 

my_specific_page doit être une instance de ActiveAdmin::Page.

+0

Mais je veux utiliser dans une autre page! –

+0

'my_specific_page' doit être une instance de' ActiveAdmin :: Page', pas nécessairement la page que vous visitez actuellement. Il suffit de s'assurer que 'my_specific_page' est la page où vous voulez savoir les autorisations – Bustikiller

+0

Oui, je suis d'accord, mais la question maintenant quelle est la bonne syntaxe pour accéder à l'instance de la page ActiveAdmin? –