我有这堂课:
class SpecialAwesome
module Controller
def builder
SpecialAwesome.with_member(current_member)
未能说:
NoMethodError: undefined method `with_member'
但后来我在这里看到了这个方法:
class SpecialAwesome
module Options
def with_member member
self.class.new options.merge(:member => member)
end
为什么其他文件无法识别此方法?
答案 0 :(得分:2)
with_member
方法被定义为SpecialAwesome::Options
上的实例方法,而不是SpecialAwesome
的类方法。可能这是一个问题。
答案 1 :(得分:1)
with_member
不是SpecialAwesome
类方法,但它在Options
模块中定义。为了使其按预期工作,您可以使用extend
方法:
class SpecialAwesome
module Options
# ...
end
extend Options
# ...
end
将Options
模块中定义的方法添加为SpecialAwesome
类方法。