我有以下配置:
module A
module B
def foo
puts "foo"
end
end
end
class C
include A
end
c = C.new
c.foo
NoMethodError: undefined method `foo' for #<C:0x8765284>
我如何实现上述目标?
感谢。
答案 0 :(得分:5)
模块B是&#34;定义&#34;在A的内部,它不是&#34;包括&#34;在A.这就是当您在C中包含A模块时无法访问#foo实例方法的原因。您可以执行以下操作:
class C
include A::B
end
C.new.foo
答案 1 :(得分:0)
您可以使用included
回调在包含B
时包含A
。
module A
def A.included(klass)
klass.include B
end
module B
def foo
puts "foo"
end
end
end
class C
include A
end
以下将起作用
c = C.new
c.foo