seb*_*seb 61 activerecord ruby-on-rails
我的app/models文件夹中有很多模型.我想稍微清理一下这个文件夹.在子文件夹中移动彼此属于的模型.问题是按照惯例,模型类被命名为相应的模块.
例如
app/models/blog/post.rb
app/models/blog/comment.rb
app/models/user.rb
以便:
应用程序/模型/博客/ post.rb
class Post < ActiveRecord
end
Run Code Online (Sandbox Code Playgroud)
并不是
class Blog::Post < ActiveRecord
end
Run Code Online (Sandbox Code Playgroud)
Ion*_*Br. 82
这是我用于Rails 3的内容:
config.autoload_paths += Dir[Rails.root.join('app', 'models', '{**}')]
Run Code Online (Sandbox Code Playgroud)
此配置告诉Rails递归扫描所有app/models子文件夹并加载所有找到的模型.不需要命名空间.
Til*_*dor 12
我们需要这样做,而且有一种非常简单的方法.
将模型移动到子文件夹中,然后告诉rails从environment.rb文件中的所有子文件夹加载文件:
config.load_paths += Dir["#{RAILS_ROOT}/app/models/*"].find_all { |f| File.stat(f).directory? }
Run Code Online (Sandbox Code Playgroud)
不需要命名空间,并且可以在您的应用中将模型称为正常模型
在找到更好的解决方案之前,我在 app/models 文件夹中创建了一个 init.rb :
应用程序/模型/init.rb
%w[blog].each do |folder|
path = [File.dirname(__FILE__), folder, "*.rb"].join('/')
Dir[path].each {|file| require file }
end
Run Code Online (Sandbox Code Playgroud)
直到现在才达到目的。
| 归档时间: |
|
| 查看次数: |
25535 次 |
| 最近记录: |