Каков правильный способ авторизации и проверки возможностей для контроллера, не использующего модели, с использованием CanCanCan?Как разрешить пространство имен, контроллеры модели без использования CanCanCan?
После долгих и прибегая к помощи чтения вики, я в настоящее время
#controllers/namespaces/unattacheds_controller.rb
def Namespaces::UnattachedsController
authorize_resource class: false
def create
# does some stuff
end
end
#models/ability.rb
def admin
can [:create], :namespaces_unattacheds
end
#view/
<%= if can? :create, :namespaces_unattacheds %>
# show a create form to authorized users
<% end %>
Это не правильно, разрешающее контроллер. Админы могут видеть условную форму создания, но не имеют права публиковать ее в действии create.
post :create, valid_params
Failure/Error: { it { expect(flash).to have_content "Successfully created" }
expected to find text "Successfully created"
got: "You are not authorized to access this page."
В одном примере wiki предлагает создать отдельный класс умения для контроллера с пространством имен. https://github.com/CanCanCommunity/cancancan/wiki/Admin-Namespace
Есть ли более простой способ достичь этого? Это приложение использует много контроллеров с именами, я действительно не хочу создавать класс способности для каждого из них.
Есть ли правильный синтаксис для обращения к контроллеру с именами в классе Ability?
can [:create], Namespaces::Unattacheds
can [:create], :namespaces_unattacheds
can [:create], namespaces/unattacheds
????
'Пространство имена :: UnattachedsController' класс, а не четкости, я думаю. –