У меня есть метод, который используется для рендеринга новостей на каждой странице. Если вы не находитесь на домашней странице по уходу, то это не приведет к конкретным новостям в этом доме. Это очень тяжелая вещь для обработки каждого запроса на каждую страницу. Мне было интересно, может ли кто-нибудь придумать хороший способ его кеширования.Кэширование метода, который имеет условный вывод
def articles_to_show
@articles = @care_home ? @care_home.news_items.latest.translated.limit(4).includes(:images) : Refinery::News::Item.latest.hidden_from_main.translated.limit(4).includes(:images)
end
Вот шаблон представления - http://pastebin.com/BAmgSZia
Я пробовал кэширование фрагментов, но потом я понял, каждый сейчас и потом, если он истекает, и первый запрос является то, что в доме престарелых, то новости статьи будут заполнены неправильно.
Действительно, это некрасиво, к сожалению, это код, который я взятый из предыдущего разработчика, это своего рода проект с обратной записью, который я хочу улучшить со временем. Я ценю рекомендации, это определенно лучший способ пойти. В тот момент, когда этот метод действительно находится в помощнике приложения, даже не в контроллере! Вспомогательный метод называется почти на каждой странице, поскольку его шаблон представления отображается повсюду. – Callum
О, больно ... Большинство моих ответов не так, потому что это помощник. Но вы по-прежнему можете использовать ленивую загрузку по блокам. Это проблематичный подход, но работает так же, как и остальная часть этого приложения ... –