Domanda

Ogni esempio di caches_action che ho visto sembra:

caches_action, :expires_in => 5.minutes
.

Ma vorrei impostare expires_in in base al tempo di scadenza di un oggetto utilizzato nell'azione.C'è un modo per fare riferimento a quell'oggetto quando si imposta expires_in poiché l'oggetto in questione è basato su params inviato all'azione?

Ho provato a usare

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

Ma ahimè non mi permetterà di fare riferimento ai parametri lì.Suggerimenti Benvenuti!

È stato utile?

Soluzione

Looks like you need to use a Proc which can get passed the params of the controller. Here is an example

caches_action :show, cache_path: Proc.new {|controller_instance| "some_cache_path_that_is_uniq/#{controller_instance.params[:id]}"}

Altri suggerimenti

The main point of action caching is to prevent actions being run every time a new request is coming in. Unless defined explicitly params are not taken into consideration.

If you want to cache based on instances I would suggest doing Conditional Gets.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top