Rails: перед действием в модуле перезаписывает тот, что в классе? - PullRequest
0 голосов
/ 12 января 2020

Если у меня есть контроллер с skip_before_action:

class UsersController 
 skip_before_action :authenticate_request, only: :create

 include Confirmable

 def create
   # ...
 end

end

и Confirmable модулем:

module Confirmable
  extend ActiveSupport::Concern

  included do
    skip_before_action :authenticate_request, only: :confirm_email
  end

  def confirm_email
    # ...
  end
end

Перезаписывает ли skip_before_action в модуле один в классе или добавить к нему, т. е. создание skip_before_action :authenticate_request, only: [:create, :confirm_email]?

1 Ответ

1 голос
/ 12 января 2020

Рельсы - это OSS .

Вот реализация skip_before_action.

Обратные вызовы реализованы как collection .

Если явно не передана опция prepend: true, вновь определенные обратные вызовы добавляются в список существующих обратных вызовов. Тем не менее, оба варианта будут иметь место.

Кроме того, вызывается обратный вызов self#included, поскольку он найден в исходном коде, поэтому модуль один добавляется к классу один.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...