2017-02-21 5 views
0

Ich habe eine Rails-Anwendung, wo ich Caching mit Memcached und Dalli implementieren.Rails Cache bekomme alle Werte eines Hashs

I Ergebnisse in Hash ist Speicherung ähnlich

Rails.cache.write("home_stays[#{home_stay['id']}]", home_stay, expires_in: 5.minutes) 

I-Wert für eine bestimmte Gastfamilie holen kann es id verwenden.

Worüber ich verwirrt bin, ist wie ich alle Homestays aus dem Cache bekommen kann.

Wenn ich Rails.cache.fetch ("home_stays") ausführen, bekomme ich Null.

Gibt es eine Möglichkeit, alle Werte eines zwischengespeicherten Hash in Rails zu erhalten?

update: Gemäß Chakreshwar Vorschlag habe ich folgendes in Homestay-Modell hinzugefügt. Ich erhalte folgende

Cache read: all_home_stays ({:expires_in=>300 seconds}) 
Cache generate: all_home_stays ({:expires_in=>300 seconds}) 
NameError: undefined local variable or method `all' for Homestay:class 

Antwort

0

Schreiben Sie die unten im Modell

def self.home_stay_cache 
    Rails.cache.fetch("all_home_stays",expires_in: 5.minutes) do 
     all 
    end 
    end 

Auf HomeStay.home_stay_cache läuft: Ich gehe davon aus, dass Sie

def self.home_stay_cache 
    Rails.cache.fetch("all_home_stay", expires_in: 5.minutes) do 
     all 
    end 
end 

Dann sind Sie in der Homestay-Modell sind, kann es holen HomeStay.home_stay_cache

+0

versucht, dies und bekam Cache r ead: all_home_stays ({: expires_in => 300 Sekunden}) Cache generieren: all_home_stays ({: expires_in => 300 Sekunden}) NoMethodError: nicht definierte Methode 'all‘ für # aus (hebeln): 13: in 'block in index' – RamanSM

+0

Versuchen Sie die aktualisierte Antwort –

+0

Hat nicht funktioniert! wurde null. – RamanSM

Verwandte Themen