2017-02-21 3 views
0

У меня есть приложение rails, где я реализую кэширование с использованием memcached и dalli.Rails cache получить все значения хэша

Я хранение результатов в хэше, как этот

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

Я могу принести значение для конкретных хоумстей, используя его идентификатор.

Что меня смущает, так это как я могу получить все домашние задания из кеша.

Если я запустил Rails.cache.fetch («home_stays»), я получаю нуль.

Есть ли способ получить все значения кэшированного хэша в рельсах?

обновление: Согласно предложению Chakreshwar, я добавил следующее в модели homestay.

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

на Беговой HomeStay.home_stay_cache я получаю следующее

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

Написать ниже в модели: Я предполагаю, что вы находитесь в модели HomeStay

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

Тогда вам может получить его, как HomeStay.home_stay_cache

+0

Пробовал это и получил Cache r ead: all_home_stays ({: expires_in => 300 секунд}) Cache generate: all_home_stays ({: expires_in => 300 секунд}) NoMethodError: undefined метод 'all 'для # <Заказы :: HomeStaysController: 0x0000000735b3d8> from (pry): 13: in 'block in index ' – RamanSM

+0

Попробуйте обновленный ответ –

+0

Не работает! получил ноль. – RamanSM

Смежные вопросы