有可能有这样的东西吗?

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

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

Rails 3的一个未解问题如下:

用名称空间指定表_名称似乎是可行的(参见Rails 4 model subfolder),但是I want to do this without a namespace.

推荐答案

默认情况下,Rails不会将models目录的子文件夹添加到自动加载路径.这就是为什么它只能找到带名称空间的模型——名称空间照亮了要查看的子目录.

要将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相关问答推荐

通过激励控制器正确更新Turbo帧信源

微软安全链接在页面加载前解锁用户

升级到 Rails 6.1.6.1 导致 Psych::DisallowedClass: 试图加载未指定的类:符号

正确更新其他列的更新列

比较 Rails 中的日期

在 JS 模块中使用 Rails-UJS(带有 webpacker 的 Rails 6)

blueprint/screen.css 未预编译

如何将自定义过滤器添加到 Active Admin?

OpenSSL::SSL::SSLError: SSL_connect SYSCALL returned=5 errno=0 state=SSLv3 read server hello A

没有要加载的文件 - readline

如何在 routes.rb 中使用 301 或 302 进行重定向

如何在我的 Gemfile 中找到未使用的Ruby

Rails:将所有未知路由重定向到 root_url

错误未初始化的常量 AWS (NameError)

rails structure.sql和schema.rb有什么区别

强参数需要多个

Rails SQL 正则表达式

何时使用 Helpers 而不是 Partials

如何在 Rails 3 中订购包含的元素

如何从 ApplicationHelper 调用 ApplicationController 方法