Ruby: как перехватить метод, поиграться с аргументами и затем вызвать метод

Мне требуется другое поведение от ActiveRecord::AttributeAssignment.assign_attributes(new_attributes, options).

Для всего моего веб-приложения я хочу оценить [и часто перезаписывать] new_attributes. (Я хочу сделать это для поддержки сторонних виджетов UI, которые не следуют правилам именования). Хотя это может быть немного вонючим, я могу написать патч для активации, только если звонок поступил из сторонней формы.

Я написал патч и могу изменить нормальное поведение; Тем не менее, мне интересно, можно ли вызвать оригинальный метод из моего патча?

Конечно, я могу просто вырезать и вставить оригинальные assign_attributes в мой патч. Есть ли способ лучше?

2 ответа

Решение

alias_method_chain существует для этой конкретной ситуации.

Это не всегда правильный выбор, но он хорошо работает, когда у вас есть подходящий вариант использования, который выглядит так.

alias или alias_method должны помочь, см. Ruby на about.com: aliasing

Другие вопросы по тегам