在我的应用程序中,我有
class User
include User::Foo
end
Run Code Online (Sandbox Code Playgroud)
User::Foo 在app/models/user/foo.rb中定义
现在我正在使用一个定义自己的Foo类的库.我收到这个错误:
警告:toplevel User :: Foo引用的常量Foo
User仅指Foo完整路径User::Foo,并且Foo从不实际引用Foo.
这是怎么回事?
更新:记得以前我遇到过同样的问题,在问题1中看到:如何在ruby中引用子模块的"完整路径"?
消息说:它找到的唯一定义是在顶层.这显然是可疑的,因为你遇到了限定名称的麻烦.
没有一种好方法可以说你想要一个不同的:: User.这是一个类,ruby将在那里寻找定义,然后在顶层.您需要以某种方式指定模块而不引用您的类.
解决此问题的一种方法:
module Other
class User
include ::User::Foo
end
end
Run Code Online (Sandbox Code Playgroud)