2017-02-21 18 views
0

私はmemcachedとdalliを使ってキャッシュを実装しているレールアプリケーションを持っています。私はこのRailsキャッシュはハッシュのすべての値を取得します

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

のようなハッシュに結果を格納しています

私はそれはIDが使用して特定のホームステイの値を取得することができます。

私が混乱していることは、どのようにしてキャッシュからすべてのホームステイを得ることができるかということです。

Rails.cache.fetch( "home_stays")を実行すると、ゼロになります。

レールにキャッシュされたハッシュのすべての値を取得する方法はありますか?

更新: Chakreshwarの提案によれば、私はホームステイモデルで次のように追加しました。 HomeStay.home_stay_cacheを実行する上で

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

私は

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 

答えて

0

を以下の取得のモデルに以下の記述: を私はあなたが、その後、あなたがホームステイモデルであることを

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

を想定していますHomeStay.home_stay_cache

+0

これを試してみてください キャッシュrキャッシュの生成:all_home_stays({:expires_in => 300 seconds}) NoMethodError:#の未定義メソッド 'all ' から(pry: ):13:「ブロックインインデックス」 – RamanSM

+0

更新された回答を試してください –

+0

うまくいかなかった!無くなった。 – RamanSM

関連する問題