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