Обратите внимание, что объект AssociationProxy
отправляет только методы, которые, как утверждает целевой объект, respond_to?
. Поэтому исправление здесь также заключается в обновлении respond_to?
:
class Category < ActiveRecord::Base
def method_missing(name, *args, &block)
if name =~ /^handleable/
"Handled"
else
super
end
end
def respond_to?(name)
if name =~ /^handleable/
true
else
super
end
end
end
На самом деле, вы должны всегда обновлять respond_to?
, если вы переопределите method_missing
- вы изменили интерфейс вашего класса, поэтому вам нужно убедиться, что все об этом знают. Смотри здесь .