Как проверить разрешение cancan на пользовательской странице ActiveAdmin?
У меня есть следующее Ability
:
can :manage, ActiveAdmin::Page, name: 'My Page'
И он работает нормально, но я хочу проверить, есть ли у пользователя возможность управлять этим ActiveAdmin::Page
на разных страницах. Итак, когда я использовал следующее:
can? :manage, ActiveAdmin::Page, name: 'My Page'
Он возвращает true
для любой страницы, даже если она не существует!
2 ответа:
Код
can? :manage, ActiveAdmin::Page, name: 'My Page'
Проверяет, может ли текущий пользователь управлять экземпляром
ActiveAdmin::Page
, атрибутname
которого равенMy Page . Это именно то условие, которое вы указали в файле способностей, и именно поэтому он всегда возвращаетtrue
.Если вы хотите знать, может ли пользователь получить доступ к определенной странице (что, по-моему, вы пытаетесь сделать), вы должны спросить: "могу ли я управлять этой страницей?"вместо "могу ли я управлять страницей с именем My Страница ?". В первом случае речь идет о конкретной странице, а во втором-о страницах с определенной характеристикой.
Чтобы спросить канкана, может ли текущий пользователь получить доступ к определенной странице, просто спросите:
can? :manage, my_specific_page
Где
my_specific_page
должен быть экземплярActiveAdmin::Page
.