有没有可能有这样的东西?
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),但我希望在不使用名称空间的情况下这样做。
发布于 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。
https://stackoverflow.com/questions/18934115
复制相似问题