Ruby on rails 非ActiveRecord模型的Rails加载

Ruby on rails 非ActiveRecord模型的Rails加载,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个Rails 3应用程序,它定义了一些非ActiveRecord模型。所有这些都在app/models/module\u name中定义。我在所有自动加载路径中都有以下内容: [4] pry(main)> app._all_autoload_paths => ["/Users/mandar/myapp/lib", "/Users/mandar/myapp/app/assets", "/Users/mandar/myapp/app/controllers", "/Users

我有一个Rails 3应用程序,它定义了一些非ActiveRecord模型。所有这些都在
app/models/module\u name
中定义。我在所有自动加载路径中都有以下内容:

[4] pry(main)> app._all_autoload_paths
=> ["/Users/mandar/myapp/lib",
 "/Users/mandar/myapp/app/assets",
 "/Users/mandar/myapp/app/controllers",
 "/Users/mandar/myapp/app/helpers",
 "/Users/mandar/myapp/app/models"]
加载模型时,以下两个类定义的处理方式是否存在差异

模块A
X类
#一些代码
结束
结束

A类::Y类
#一些代码
结束
我问这个问题的原因是有时我看到一个
未初始化的常量a::Y-NameError
错误

更新:在Sibevin的回答之后,我想更清楚地说明这一点。目前,我有以下文件结构:

app
  - models
    - a
      - x.rb
      - y.rb
我看到了Y的错误,它使用了
ModuleName::ClassName
语法,但几乎没有看到X的错误


谢谢你的帮助

它们应该没有区别,但我通常会将它们分成单独的文件

您可以先创建一个文件夹
app/models/a/
,然后将您的
class a::X
放入
app/models/a/X.rb

类似地,
app/models/a/y.rb
用于
class a::y

顺便说一句,
app/models/a.rb
用于您的
模块a
(如果需要)

更新:

实际上,我从未使用第二种格式在模块中声明类。也许以下医生可以回答您的问题:

如果您在重新打开模块时试图走捷径,那么您 可能已经注意到跳过的名称空间中的常量不是 可用。这是因为外部名称空间没有添加到 模块。嵌套


这就是我目前的文件结构。抱歉说得不准确。我将相应地更新问题。