Вопрос

Каждый пример 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]}"}

Другие советы

Основная цель кэширования действий — предотвратить выполнение действий каждый раз при поступлении нового запроса.Если параметры не определены явно, они не учитываются.

Если вы хотите кэшировать на основе экземпляров, я бы предложил сделать Условные получения.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top