LoadError无法自动加载常量

似乎自动加载器正在加载lib / tools / address而不是我的模型

地址抛出以下错误

LoadError:无法自动加载常量Address,预期/lib/tools/address.rb来定义它

有人能告诉我我做错了什么。 我以为
地址将指向常量模型/ address.rb

Tools :: lib / tools / address.rb的地址

应用程序/模型/ address.rb

class Address blah end 

LIB /工具/ address.rb

 module Tools class Address blah blah end end 

根据我的经验,使用具有相同名称但具有不同名称空间的多个常量可能会很棘手。 在您的情况下,您有两个Address常量,一个位于顶层,另一个位于Tools命名空间内。 这可能会混淆Rails自动加载器。

一些可能的方案:

如果要使用顶级Address (即模型),请使用::Address显式引用它。

如果这不起作用,您还可以使用require_dependency为自动装带器提供您想要的提示。 在给你LoadError的文件的顶部,把这行:

 require_dependency("address") 

这是文档:

require_dependency

使用机制解释文件并将其定义的常量标记为自动加载。 file_name可以是字符串或响应to_path。

在代码中使用此方法,该代码绝对需要在该点定义某个常量。 一个典型的用例是为不同名称空间中具有相同相对名称的常量确定常量名称解析,否则其评估将依赖于加载顺序。