有可能有这样的东西吗?
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.
有可能有这样的东西吗?
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开始,应用生成器默认不包含config.autoload_paths
.所以,请注意,上面的内容确实属于config/application.rb.
修复了上面代码中的自动加载路径示例,使用{*/}
而不是{**}
.请务必阅读muichkine's comment了解详细信息.