了解渴望加载&如何使用它? (具体问题)

时间:2010-05-19 12:13:32

标签: ruby-on-rails

我的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

既然我正在使用急切的加载,我无法想象这是最好的方法(它也没有工作,因为我没有@变量) - 我想知道是否有人可以摆脱一些光如何处理这个?

1 个答案:

答案 0 :(得分:0)

急切加载只是意味着当你加载一本书时它会立即获取相关的对象。例如,当你这样做时:

<% @books.each do |book| %>
     <%= book.author.name %>
<% end %>

book.author.name将不会再次命中数据库,因为在提取该书时它已经被加载了。

您的问题是您缺少作者和流派的完整列表 - 这与急切加载无关。

我没有看到任何其他方式,而不是像以前那样加载它(即@authors = Authors.all)。