我的rails应用程序中有以下关系:
流派 - 有很多作者
作者 - 属于流派,有很多书
书籍 - 属于作者,属于用户
(用户可以将书籍添加到数据库中)
在我的控制器中我有:
@books=current_user.books(:include => [:author => :genre], :order => 'books.created_at DESC')---
-
在我以前的控制器中:
@authors =作者。全部 @genres = Genre.All
等
-
在我看来,我有
@genres.each do |genre|
@authors.each do |author|
if author.genre_id == genre.id
stuff
end
end
端
既然我正在使用急切的加载,我无法想象这是最好的方法(它也没有工作,因为我没有@变量) - 我想知道是否有人可以摆脱一些光如何处理这个?
答案 0 :(得分:0)
急切加载只是意味着当你加载一本书时它会立即获取相关的对象。例如,当你这样做时:
<% @books.each do |book| %>
<%= book.author.name %>
<% end %>
book.author.name将不会再次命中数据库,因为在提取该书时它已经被加载了。
您的问题是您缺少作者和流派的完整列表 - 这与急切加载无关。
我没有看到任何其他方式,而不是像以前那样加载它(即@authors = Authors.all)。