2017-02-21 1 views
0

J'ai une application rails où j'implémente la mise en cache en utilisant memcached et dalli.Rails cache obtenir toutes les valeurs d'un hachage

je stocke les résultats dans ce hachage comme

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

Je peux chercher la valeur pour une famille d'accueil particulier en utilisant son identifiant. Ce que je ne comprends pas, c'est comment puis-je obtenir tous les homestays du cache.

Si j'exécute Rails.cache.fetch ("home_stays"), je reçois zéro.

Existe-t-il un moyen d'obtenir toutes les valeurs d'un hachage mis en cache dans les rails?

mise à jour: Selon la suggestion de Chakreshwar, j'ai ajouté le modèle suivant chez l'habitant.

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

sur l'exécution HomeStay.home_stay_cache je me suit

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 

Répondre

0

Ecrivez le ci-dessous dans le modèle: Je suppose que vous êtes dans le modèle HomeStay

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

Ensuite, vous peut aller chercher comme HomeStay.home_stay_cache

+0

Essayé cela et obtenu Cache r ead: all_home_stays ({: expires_in => 300 secondes}) Cache générer: all_home_stays ({: expires_in => 300 secondes}) NoMethodError: méthode non définie 'all 'pour # from (pry): 13: dans 'bloc in index ' – RamanSM

+0

Essayez la mise à jour –

+0

Ne fonctionne pas! eu zéro. – RamanSM