Conjunto caches_action, :expires_in => dinamicamente
-
15-11-2019 - |
Pergunta
Cada exemplo de caches_action
Eu vi parece:
caches_action, :expires_in => 5.minutes
mas eu gostaria de definir expires_in
com base no tempo de expiração de um objeto usado na ação.Existe alguma maneira de fazer referência a esse objeto, quando a configuração do expires_in
desde que o objeto em questão é baseado no params
enviado para a ação?
Eu tentei usar
caches_action, :expires_in => Object.find(params[:id])
mas infelizmente isso não vai me deixar de referência params lá.Sugestões de boas-vindas!
Solução
Parece que você precisa usar um Proc, que pode passar os parâmetros do controlador.Aqui está um exemplo
caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}
Outras dicas
O principal ponto de ação cache é evitar ações a ser executado cada vez que um novo pedido está chegando.A menos que explicitamente definidos parâmetros não são levados em consideração.
Se você deseja armazenar em cache baseado em instâncias gostaria de sugerir a realização de Condicional Fica.