它是 Rails 中的标准。Rails 加载模型的方式是通过查看文件夹结构来猜测类的位置。我们有所谓的autoload_paths
.
你可以通过调用你的来找到它们rails console
(这有点hacky,可能有更简单的方法来显示它们):
app.instance_variable_get(:"@app").instance_variable_get(:"@_all_autoload_paths")
默认的 Rails 应用程序输出,没有config.autoload_paths += %W(#{config.root}/lib)
在您的config/application.rb
配置块中,如下所示:
["/Users/lunks/Code/rsvp/app/assets",
"/Users/lunks/Code/rsvp/app/controllers",
"/Users/lunks/Code/rsvp/app/helpers",
"/Users/lunks/Code/rsvp/app/mailers",
"/Users/lunks/Code/rsvp/app/models"]
所以,如果你有app/models/something/util.rb
并且你在Something::Util
某个地方打电话,它会查看这些路径,找到app/models/
文件夹something/util.rb
并加载它。
另一方面,Ruby 并不关心这些。普通 Ruby 中的自动加载按本页所述工作。您必须使用自动加载或直接要求文件(文件夹结构没有任何意义)。