gpt4 book ai didi

ruby 认为我在引用一个顶级常量,即使我指定了完整的命名空间

转载 作者:数据小太阳 更新时间:2023-10-29 07:06:52 26 4
gpt4 key购买 nike

在我的应用程序中我有

class User
include User::Foo
end

User::Foo 定义在 app/models/user/foo.rb

现在我正在使用一个定义了自己的 Foo 类的库。我收到此错误:

warning: toplevel constant Foo referenced by User::Foo

User 仅引用具有完整路径的 FooUser::Foo,而 Foo 实际上从来没有指的是 Foo

这是怎么回事?

更新:才想起我之前遇到过同样的问题,在问题1中看到这里:How do I refer to a submodule's "full path" in ruby?

最佳答案

确保你想要的 User::Foo 定义是可见的

消息说:它找到的唯一定义是在顶层。这显然是可疑的,因为您不厌其烦地限定了名称。

没有一个好的方式来表达您想要一个不同的::User。这是一个类,ruby 会在那里寻找定义,然后在顶层。您需要以某种方式指定模块而不引用您的类。

解决此问题的一种方法:

module Other
class User
include ::User::Foo
end
end

关于ruby 认为我在引用一个顶级常量,即使我指定了完整的命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6208206/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com