Рельсы: добавить до принятия в суперкласс


У меня есть метод аутентификации в моем ApplicationController, который я всегда хочу запустить первым. У меня также есть метод в субконтроллере, который я хочу запустить после метода аутентификации, но перед другим ApplicationController before_actions. Другими словами, Я хочу этого:

ApplicationController
before_action first
before_action third

OtherController < ApplicationController
before_action second

Вышеизложенное заставляет методы вызываться в порядке: first -> third -> second. Но я хочу, чтобы приказ ушел.: first -> second -> third.

Я пробовал использовать prepend_before_action, например Итак:

ApplicationController
prepend_before_action first
before_action third

OtherController < ApplicationController
prepend_before_action second

Но это заставляет его идти second -> first -> third.

Как мне получить приказ быть first -> second -> third?

2 5

2 ответа:

Вы можете использовать prepend_before_actionследующим образом:

class ApplicationController < ActionController::Base
  before_action :first
  before_action :third
end

class OtherController < ApplicationController
  prepend_before_action :third, :second
end

Попробуйте следующее И посмотрите, работает ли это:

class ApplicationController < ActionController::Base
  before_action :first
  before_action :third
end

class OtherController < ApplicationController
  skip_before_action :third
  before_action :second
  before_action :third
end