Установить caches_action,: expires_in => динамически - PullRequest
2 голосов
/ 01 марта 2012

Каждый пример caches_action, который я видел, выглядит следующим образом:

caches_action, :expires_in => 5.minutes

но я бы хотел установить expires_in в зависимости от времени истечения объекта, используемого в действии. Можно ли ссылаться на этот объект при установке expires_in, поскольку рассматриваемый объект основан на params, отправленном действию?

Я пытался использовать

caches_action, :expires_in => Object.find(params[:id])

но, увы, это не позволит мне ссылаться на параметры там. Предложения приветствуются!

Ответы [ 2 ]

2 голосов
/ 10 ноября 2012

Похоже, вам нужно использовать Proc, который может передавать параметры контроллера. Вот пример

caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}
0 голосов
/ 01 марта 2012

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

...