首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Rails 4:在子路径中组织rails模型,而不使用命名空间模型?

Rails 4:在子路径中组织rails模型,而不使用命名空间模型?
EN

Stack Overflow用户
提问于 2013-09-21 23:02:49
回答 1查看 26.3K关注 0票数 81

有没有可能有这样的东西?

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

我们的目标是更好地组织/app/models文件夹,但不必对模型进行命名。

关于Rails3还有一个悬而未决的问题:Rails 3.2.9 and models in subfolders

使用名称空间指定table_name似乎是可行的(参见Rails 4 model subfolder),但我希望在不使用名称空间的情况下这样做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-22 02:32:54

默认情况下,Rails不会将model目录的子文件夹添加到autoload路径中。这就是为什么它只能找到名称空间模型的原因--名称空间照亮了要查找的子目录。

要将应用程序/型号的所有子文件夹添加到自动加载路径,请将以下内容添加到config/application.rb

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

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

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+的更新

从Rails4.1开始,默认情况下应用程序生成器不包含config.autoload_paths。因此,请注意,上述代码实际上属于config/application.rb。

更新

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

票数 117
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18934115

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档