Кэширование запросов в действии контроллера Rails - PullRequest
0 голосов
/ 18 марта 2020

Я использую кеширование запросов для действия индекса контроллера пользователя.

def index
   @users = User.all
   json_response @users
end

Я следил за роликами, снятыми на ролики, и добавил это в контроллер пользователя.

   def index
     @users = User.cached_data
     json_response @users
   end

В модели пользователя I Я добавляю метод cached_data.

  def self.cached_data
   Rails.cache.fetch([])   // I am not getting how to do caching here and get all the users data
  end

Может кто-нибудь помочь мне решить эту проблему. Спасибо

1 Ответ

0 голосов
/ 18 марта 2020

Вы хотите превратить Rails.cache.fetch в блок, подобный следующему:

    def self.cached_data
      Rails.cache.fetch("all_users", expires_in: 2.hours) do
        # add your query here
        User.all
      end
    end

Ключом cache_ может быть что угодно, а expires_in: необязательно, но я всегда добавляю его, если только ключ cache_key основан на метке времени или чем-то еще, что автоматически приведет к истечению срока действия кэша.

Кроме того, эта страница документации по-прежнему действительна:

https://guides.rubyonrails.org/caching_with_rails.html#low -уровневое кэширование

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...