это то, что alias_method_chain
предоставляет вам.
В основном, когда вы говорите
alias_method_chain :some_method, :feature
Вам предоставляется два метода:
some_method_with_feature
some_method_without_feature
Что происходит, когда вызывается оригинал some_method
, на самом деле он вызывает some_method_with_feature
. Затем вы получаете ссылку на some_method_without_feature
, которая является вашим исходным объявлением метода (то есть для поведения возврата / по умолчанию). Итак, вы захотите определить some_method_with_feature
, чтобы фактически делать что-то, что, как я говорю, вызывается, когда вы звоните some_method
Пример:
def do_something
"Do Something!!"
end
def do_something_with_upcase
do_something_without_upcase.upcase
end
alias_method_chain :do_something, :upcase
do_something # => "DO SOMETHING!!"
См. Документацию здесь :