Установить caches_action, :expires_in => динамически
-
15-11-2019 - |
Вопрос
Каждый пример caches_action
Я видел, выглядит так:
caches_action, :expires_in => 5.minutes
но я бы хотел установить expires_in
на основе времени истечения срока действия объекта, используемого в действии.Есть ли способ сослаться на этот объект при настройке expires_in
поскольку рассматриваемый объект основан на params
отправили в дело?
Я попробовал использовать
caches_action, :expires_in => Object.find(params[:id])
но, увы, это не позволит мне ссылаться на параметры там.Предложения приветствуются!
Решение
Похоже, вам нужно использовать Proc, который может передавать параметры контроллера.Вот пример
caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}
Другие советы
Основная цель кэширования действий — предотвратить выполнение действий каждый раз при поступлении нового запроса.Если параметры не определены явно, они не учитываются.
Если вы хотите кэшировать на основе экземпляров, я бы предложил сделать Условные получения.