Я хочу динамически добавлять методы класса при вызове метода acts_as
. Моя файловая структура выглядит следующим образом (взяты из http://guides.rubyonrails.org/plugins.html):Добавить методы класса для custom actions_as
module ActsAsFoo
extend ActiveSupport::Concern
included do
end
module ClassMethods
def acts_as_foo(options = {})
include ActsAsFoo::LocalInstanceMethods
end
end
module LocalInstanceMethods
def instance_method
# This method works without any issue
end
end
end
class Bar
acts_as_foo
end
Я хочу, чтобы иметь возможность объявить методы класса только когда класс называет acts_as_foo
. Методы экземпляра работают с LocalInstanceMethods
. Самый простой способ - добавить в модуль, но все мои другие классы тоже имеют этот метод. Я уже пытаюсь добавить define_method
в метод acts_as
, возвращает неопределенный метод. Есть идеи ?
Хотите добавить методы класса или методы экземпляра в 'Bar'? Ваш вопрос говорит о методах класса, но модуль называется 'LocalInstanceMethods' – Slicedpan
@Slicedpan Я не был ясен. Я переписываю свой вопрос. Я могу добавить локальные экземпляры без проблем, но не методы класса. – pierallard