Представьте себе простой случай, подобный этому:
class Book
has_many :chapters
end
Допустим, в моем контроллере я делаю что-то вроде этого:
book = Book.find(:first,
:include => :chapters,
:conditions => ['chapters.title = ?', "In the beginning"]
Теперь, допустим, я хочу показать главу. Как я могу обратиться к главам в Rails без повторного попадания в базу данных? Если я сделаю что-то вроде этого:
chapters = book.chapters.select{|chapter| chapter.title == "In the beginning"}
Пересмотрит ли Rails базу данных для всех глав, чтобы он мог их сканировать, и, что еще хуже, придется снова сканировать их все в коде контроллера?
И, похоже, что-то, что использует find, выглядит так:
chapters = Chapter.find_by_book_id_and_title(book.id, "In the beginning")
вызывает повторное попадание в базу данных, даже если глава уже кэширована.