Понимание нетерпеливой загрузки и как ее использовать? (конкретный вопрос) - PullRequest
0 голосов
/ 19 мая 2010

У меня есть следующее отношение в моем приложении rails:

жанр - имеет много - авторов

авторы - принадлежат жанру и имеет много книг

книг - принадлежит авторам и пользователям

(пользователи могут добавлять книги в БД)

в моем контроллере у меня есть:

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

-

В моем контроллере раньше было:

@hors = Author.All @genres = Genre.All

и т.д.

-

На мой взгляд, у меня есть

@genres.each do |genre|

@authors.each do |author|

if author.genre_id == genre.id 

    stuff

end

end

конец

Теперь, когда я использую готовую загрузку, я не могу себе представить, что это лучший способ сделать это (и при этом это не работает, поскольку у меня нет переменных @) - мне было интересно, может ли кто-нибудь пролить свет о том, как подойти к этому?

1 Ответ

0 голосов
/ 19 мая 2010

Стремительная загрузка означает, что когда вы загрузите книгу, она сразу же выберет связанный объект. Так, например, когда вы делаете:

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

book.author.name больше не будет попадать в базу данных, поскольку она уже была загружена при получении книги.

Ваша проблема в том, что вам не хватает полного списка авторов и жанров - и это не связано с энергичной загрузкой.

Я не вижу другого способа, кроме как загрузить его, как вы делали раньше (т.е. @authors = Authors.all).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...