我有一个班级和Dog
另一个app/models/dog.rb
班级Services::My::Deeply::Nested::Dog
。app/services/my/deeply/nested/dog.rb
现在在 Services::My (app/services/my.rb) 中,我引用了以下内容之一(无需区分,因为在所有情况下行为都是完全相同的):
Deeply::Nested::Dog
Services::My::Deeply::Nested::Dog
::Services::My::Deeply::Nested::Dog
无论我选择上述哪个,我总是收到以下错误消息:
services/my.rb:警告:顶级常量 Dog 引用
Services::My::Deeply::Nested::Dog
此外,我的深度嵌套的 Dog 甚至从未被解释器看到(我通过使用 puts 和语法错误发现,没有任何反应)。
可能的解决方法(我都不喜欢)是:
- 重命名 Dog 类之一
- 使用 RAILS_ENV=production 运行以禁用自动加载并改用急切加载
require_dependency
那指向深深嵌套的狗
作为一名计算机科学家,我发现上述解决方法都不令人满意。我想了解为什么在没有解决方法的情况下找不到我的深度嵌套的 Dog,并找出最先进的 Ruby/Rails 解决方案是解决这个问题的。
提前非常感谢。