了解Eager Loading以及如何使用它? (具体问题)
我的rails应用程序中有以下关系:
类型 – 有很多 – 作者
作者 – 属于流派,有很多书
书籍 – 属于作者,属于用户
(用户可以将书籍添加到数据库中)
在我的控制器中我有:
@books=current_user.books(:include => [:author => :genre], :order => 'books.created_at DESC')---
–
在我的控制器中,我曾经有过:
@authors = Author.All @genres = Genre.All
等等
–
在我看来,我有
@genres.each do |genre| @authors.each do |author| if author.genre_id == genre.id stuff end end
结束
现在我正在使用急切的加载,我无法想象这是最好的方法来做到这一点(也没有,因为我没有@变量) – 我想知道是否有人可以阐明如何接近这个?
急切加载只是意味着当你加载一本书时它将立即获取相关对象。 例如,当你这样做时:
<% @books.each do |book| %> <%= book.author.name %> <% end %>
book.author.name将不会再次命中数据库,因为它已在提取本书时加载。
您的问题是您缺少作者和类型的完整列表 – 这与急切加载无关。
我没有看到任何其他方式,而不是像以前那样加载它(即@authors = Authors.all)。
- 我可以在database.yml中指定rails环境应该只读访问数据库吗?
- Heroku中部署的应用程序未显示图像
- 在我的rails应用程序中实现searchkick和typeahead不起作用
- 为什么我只在尝试将应用程序上传到Heroku时才获得ActionView :: Template :: Error?
- rake资产之间的差异:预编译和rake资产:clobber
- Error-Bundler无法找到gem“bundler”的兼容版本:在Heroku上推送项目时
- 使用gem未读与public_activity
- Rails 2:使用form_for构建一个覆盖同一类的多个对象的表单
- Ruby on Rails || 向用户添加会议