ruby-on-rails - rails 4 : organize rails models in sub path without namespacing models?

标签 ruby-on-rails namespaces ruby-on-rails-4 models subdirectory

有可能有这样的东西吗?

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

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

Rails 3 的一个未解答的问题如下: Rails 3.2.9 and models in subfolders .

使用命名空间指定 table_name 似乎可行(请参阅 Rails 4 model subfolder ),但是我想在没有命名空间的情况下执行此操作

最佳答案

默认情况下,Rails 不会将模型目录的子文件夹添加到自动加载路径中。这就是为什么它只能找到命名空间模型——命名空间阐明了要查找的子目录。

要将app/models的所有子文件夹添加到自动加载路径,请将以下内容添加到config/application.rb:

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

或者,如果您有一个更复杂的 app/models 目录,则上述将 app/models 的所有子文件夹组合在一起的方法可能无法正常工作。在这种情况下,您可以通过更明确一点并仅添加您指定的子文件夹来解决此问题:

config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name1>")
config.autoload_paths += Rails.root.join("app", "models", "<my_subfolder_name2>")
<小时/>

Rails 4.1+ 更新

从 Rails 4.1 开始,应用程序生成器默认不包含 config.autoload_paths。因此,请注意,上述内容确实属于 config/application.rb

更新

修复了上述代码中的自动加载路径示例,以使用 {*/} 而不是 {**}。请务必阅读muichkine's comment有关详细信息。

关于ruby-on-rails - rails 4 : organize rails models in sub path without namespacing models?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18934115/

相关文章:

mysql - 在大表上运行 ALTER 迁移的建议

c# - 继承是否也会自动从其父级继承 "inherit"命名空间?

c# - 命名空间与 WCF 的相似名称混淆

c# - 在 Snippet 上获取当前命名空间

ruby-on-rails - 我无法使用 FactoryGirl.create 创建对象,验证失败用户已被占用

ruby-on-rails - 如果我仍然需要从环境中加载变量,secrets.yml 有什么意义?

ruby-on-rails - RoR - 外键设置为 nil 后记录保存失败

javascript - 检测其他打开的网站甚至应用程序的数量(可能)?

ruby-on-rails - GitLab 7-0 稳定无法推送或克隆

除非使用 turbolinks 和 rails 4 重新加载页面,否则不会执行 javascript