Есть 2 Пространства имен:Ruby On Rails' не работает, как ожидалось
api/public
api/mobile
авторизация Швейцар с правильным объемом создаются в общественном контроллере. Например:
class API::Public::PostsController < ApplicationController
before_action -> { doorkeeper_authorize! :public }
def show
@post = Post.find(params[:id])
end
end
Контроллер в пространстве имен мобильной связи наследуется от контроллера в открытом пространстве имен. Например:
class API::Mobile::PostsController < API::Public::PostsController
skip_before_action :doorkeeper_authorize!
before_action -> { doorkeeper_authorize! :mobile }
end
Итак, суть здесь в том, что функциональность одинакова и если есть какая-то разница для мобильных устройств, то действие может быть отменено в мобильном пространстве имен. Проблема в том, что области для разных пространств имен различны, но пропускают doorkeeper_authorize! не работает.
Есть ли способ решить эту проблему?
Если есть метод before_action, который принимает лямбда/proc, почему нет способа пропустить лямбда/proc? Есть ли ограничение? –
Как бы вы указали, какой лямбда/proc пропустить? У них нет имен. Например, предположим, что есть два 'before_action' lambdas (как и было на самом деле), и оба они называются' doorkeeper_authorize! '. Как вы различаете их? –
Хорошая точка. Как насчет хранения лямбда в переменной? Что-то вроде: 'authorize_public = lambda {doorkeeper_authorize! : public} '? И 'skip_before_action: authorize_public' –