Rub*_*tic 74 namespaces ruby-on-rails models subdirectory ruby-on-rails-4
有没有可能有这样的东西?
app/models/
app/models/users/user.rb
app/models/users/education.rb
Run Code Online (Sandbox Code Playgroud)
目标是更好地组织/ app/models文件夹,但不必命名模型.
Rails 3的一个悬而未决的问题是: Rails 3.2.9和子文件夹中的模型.
使用命名空间指定table_name似乎可行(请参阅Rails 4模型子文件夹),但我想在没有命名空间的情况下执行此操作.
pdo*_*obb 108
默认情况下,Rails不会将models目录的子文件夹添加到自动加载路径.这就是它只能找到命名空间模型的原因 - 命名空间照亮了要查看的子目录.
要将app/models的所有子文件夹添加到自动加载路径,请将以下内容添加到config/application.rb:
config.autoload_paths += Dir[Rails.root.join("app", "models", "{*/}")]
Run Code Online (Sandbox Code Playgroud)
或者,如果您有一个更复杂的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>")
Run Code Online (Sandbox Code Playgroud)
从Rails 4.1开始,config.autoload_paths默认情况下不包括应用程序生成器.所以,请注意,上面确实属于config/application.rb.
修复了上面代码中使用的自动加载路径示例{*/}而不是{**}.请务必阅读muichkine的评论以获取详细信息.
| 归档时间: |
|
| 查看次数: |
23963 次 |
| 最近记录: |