了解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)。