Метод псевдонима 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

Так что он проверяет этот метод против другого разрешения. Но я хотел бы избежать необходимости делать это, если это возможно.

Возможно ли псевдоним метода только из одного контроллера в другой? И не псевдоним для всех контроллеров. Глядя на документы, я не вижу этого.

0 ответов

Другие вопросы по тегам