Нужно ли вызывать call_backs с одинаковыми именами в родительских и дочерних классах - PullRequest
0 голосов
/ 06 ноября 2019

У меня было два метода с одинаковым именем, которое присутствует как в родительском, так и в дочернем классе. Но у меня обратный вызов before_filter: method_name вызывается только в родительском классе, а before_filter: нет в дочернем классе. Но load_object вызывается в дочернем классе без самого call_back.

class Parent
  before_filter: call

  def call
    #
  end
end

class child < Parent
  def call
    # But the method is called here without call_back
  end
end

Нет класса, унаследованного от дочернего.

1 Ответ

0 голосов
/ 06 ноября 2019

Когда вы определяете метод в дочернем классе, это переопределяет любой метод с тем же именем в родительском классе. (Это основной принцип в объектно-ориентированном программировании; он никоим образом не относится к ruby ​​/ rails.)

before_filter: :call говорит: «Выполните метод call перед любым действием контроллера».

Класс Child наследует поведение before_filter, но переопределяет метод call. Поэтому выполняется его собственная реализация call.


Я не могу посоветовать, как изменить ваш код, потому что я не знаю, чего вы пытаетесь достичь. Но, надеюсь, это объясняет, почему вы испытываете это (правильное) поведение.

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