Come invocare una spazzatrice di binari in questo scenario?
-
31-10-2019 - |
Domanda
Come puoi vedere dal codice qui sotto. Sto memorizzando nella cache il show
azione. Ho anche il seguente metodo nell'azione dello spettacolo View.create_for(@song)
.
Vorrei farlo così, quando View.create_for(@song)
si chiama, elimina la rispettiva cache.
Come farei questo? Devo invocare manualmente la spazzatrice di binari nel View
modello? Se é cosi, come?
Il mio controller:
class SongsController < ApplicationController
caches_action :show, :cache_path => (proc do
song_path(params[:id], :user_id => user_signed_in? ? current_user.id : nil)
end)
# I tried with the following line, but this is not what I want. I only want to call the sweeper when `View.create_for(@song)` is called:
# cache_sweeper :views_sweeper, :only => [:show]
def show
@song = Song.find(params[:id])
View.create_for(@song)
end
end
Il mio spazzino:
class SongsSweeper < ActionController::Caching::Sweeper
observe Song
def after_save(song)
expire_fragment(/songs\/#{song.id}\/.*?/)
end
end
Nessuna soluzione corretta
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow