【发布时间】:2015-04-16 08:18:49
【问题描述】:
我想在调用acts_as 方法时动态添加类方法。我的文件结构如下(取自http://guides.rubyonrails.org/plugins.html):
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 我不清楚。我重写了我的问题。我可以毫无问题地添加本地实例,但不能添加类方法。
标签: ruby-on-rails ruby-on-rails-4 activesupport-concern