Мне кажется, что кэширование фрагментов и нетерпевая загрузка - по крайней мере иногда - несколько расходятся друг с другом. Скажем, у меня есть Пользователь, у которого много сообщений, у каждого из которых есть много комментариев, которые, в свою очередь, также могут иметь много комментариев и т.д.
Когда мне приходится отображать страницу, я мог бы сделать желаемую загрузку пользователя, всех ее сообщений, всех их комментариев и т.д., чтобы избежать попадания в базу данных n-1 раз. Или я мог лениво загружать каждый объект и полагаться на кэширование фрагментов, чтобы запрашивать базу данных только для новых или измененных объектов. Использование кэширования фрагментов и нетерпевая загрузка кажутся расточительными, поскольку я мог бы сделать очень сложный запрос и создать экземпляр множества объектов только для использования их небольшой части.
Но что, если у меня есть приложение, в котором у пользователя много Foos, в свою очередь, есть много баров и т.д., но в котором каждый Foo создается вместе со всеми его барами и связанными с ними объектами в одно и то же время и с тех пор никогда не меняется. В этом случае я хотел бы использовать кэширование фрагментов для Foos, которые были визуализированы, но использовать активную загрузку, когда мне нужно загрузить новый Foo со всеми его связанными объектами. В конце концов, от кеширования фрагментов на более гранулированном уровне ничего не получится.
Как лучше всего в Rails сделать это? Полагаю, я мог бы сделать один запрос, чтобы получить только идентификаторы Foo, а затем сделать явную находку с нетерпеливой загрузкой, когда мне нужно отобразить каждый Foo. Есть ли лучший/более элегантный/более идиоматический способ сделать это?