Метод псевдонима CanCanCan для контроллера
В моем приложении у меня есть права доступа, настроенные так для администратора:
can :read, Journey
can :destroy, Journey
can :update, Journey
А у меня контроллеры вот так:
class JourneyController < ApplicationController
authorize_resource class: :journey
def index; end
def show; end
end
module Journeys
class VoidJourneyController < ApplicationController
authorize_resource class: :journey
def show; end
def destroy; end
end
end
Это основано на том, как DHH управляет своими контролерами: http://jeromedalbert.com/how-dhh-organizes-his-rails-controllers/
Теперь у меня проблема в том, что, поскольку у меня есть метод show внутри контроллера VoidJourney (чтобы показать пользователю некоторую дополнительную информацию во время разговора с API), это означает, что пользователь, у которого нет разрешения на уничтожение пути, может получить доступ Это потому, что шоу имеет псевдоним для чтения, и только контроллер уничтожен в этом контроллере.
CanCanCan имеет alias_action
Метод, но это позволяет только наложение метода на другой для всех контроллеров, а не только для одного.
Единственный способ справиться с этим - сделать:
def show
authorize! :destroy, :journey
end
Так что он проверяет этот метод против другого разрешения. Но я хотел бы избежать необходимости делать это, если это возможно.
Возможно ли псевдоним метода только из одного контроллера в другой? И не псевдоним для всех контроллеров. Глядя на документы, я не вижу этого.