Rails 4:在没有名称空间模型的子path中组织rails模型?

有没有可能有这样的事情?

app/models/ app/models/users/user.rb app/models/users/education.rb 

目标是更好地组织/ app / models文件夹,但不必命名空间模型。

Rails 3的一个未解答的问题是: Rails 3.2.9和子文件夹中的模型 。

用命名空间指定table_name似乎可行(请参阅Rails 4模型子文件夹 ),但是我想在没有命名空间的情况下执行此操作

是的,这绝对有可能。 唯一的技巧就是你必须将/ app / models的子文件夹添加到Rails的加载path中。 为此,请将以下内容添加到/config/application.rb中

 config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")] 

这样,Rails知道自动加载/ app /模型的子文件夹,而不需要任何命名空间提示。

注意 :如果你有一个更复杂的/ app / models目录,上述将/ app / models的子文件夹放在一起的方法可能不起作用。 在这种情况下,您可以通过稍微更加明确的方式来解决这个问题:

 config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name>") 

更新为Rails 4.1 +

从Rails 4.1开始,应用程序生成器默认不包含config.autoload_paths 。 所以,FYI,以上属于config / application.rb

UPDATE

修正了以上代码中使用{*/}代替{**}自动加载path示例。 一定要阅读muichkine的评论的细节。