在我的应用中,我有
class User
include User::Foo
end
User::Foo
在app / models / user / foo.rb
现在我正在使用一个定义自己的Foo
类的库。我收到了这个错误:
警告:toplevel User :: Foo
引用的常量Foo
User
仅指Foo
完整路径User::Foo
,而Foo
实际上从未引用Foo
。
发生了什么事?
更新:刚才记得我以前遇到过同样的问题,问题1见How do I refer to a submodule's "full path" in ruby?
答案 0 :(得分:5)
消息说:它找到的唯一定义是在顶层。这显然是可疑的,因为你遇到了限定名称的麻烦。
没有一种好方法可以说你想要一个不同的::用户。这是一个类,ruby将在那里寻找定义,然后在顶层。您需要以某种方式指定模块而不引用您的类。
解决此问题的一种方法:
module Other
class User
include ::User::Foo
end
end