2010-05-19 17 views
0

je la relation suivante dans mon application Rails:Comprendre Eager Chargement & Comment l'utiliser? (Problème spécifique)

genre - a beaucoup - auteurs

auteurs - appartiennent au genre et a beaucoup de livres

livres - appartient aux auteurs et appartient aux utilisateurs

(les utilisateurs peuvent ajouter des livres à la db)

dans mon contrôleur j'ai:

@books=current_user.books(:include => [:author => :genre], :order => 'books.created_at DESC')--- 

-

Dans mon contrôleur, je l'habitude d'avoir:

@authors = Author.All @genres = Genre.All

etc.

-

À mon avis, j'ai

@genres.each do |genre| 

@authors.each do |author| 

if author.genre_id == genre.id 

    stuff 

end 

end 

fin

Maintenant que j'utilise le chargement impatient, je ne peux pas imaginer c'est la meilleure façon de le faire (elle ne fonctionne pas comme je n'ai pas les variables @) - Je me demandais si quelqu'un pouvait faire la lumière sur la façon d'aborder cela?

Répondre

0

Le chargement rapide signifie simplement que lorsque vous chargez un livre, il récupère immédiatement l'objet associé. Ainsi, par exemple quand vous faites:

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

book.author.name ne nouveau la base de données a frappé parce qu'il était déjà chargé quand le livre a été tiré par les cheveux.

Votre problème est qu'il vous manque la liste complète des auteurs et des genres - et ce n'est pas lié au chargement impatient.

Je ne vois pas d'autre moyen que de le charger comme vous le faisiez auparavant (c'est-à-dire @authors = Authors.all).

+0

Merci pour l'info! – Elliot

Questions connexes