Как кэшировать мои tag_counts для acts_as_taggable_on. - PullRequest
0 голосов
/ 11 октября 2018

У меня есть это в файле erb>

<%= select_tag :catalog_item_submission_tag, options_for_select(Submission.tag_counts.order('name ASC').map {|t| [t.name, t.name]}, params[:catalog_item_submission_tag]), include_blank: true, class: 'select2ify allow-clear' %>

, и я хотел бы его кэшировать, потому что количество тегов огромно и стоит времени моего сайта:

Submission.tag_counts.count
 => 23399

И они меняются не так часто (возможно, достаточно кеша, который истекает каждые 4 часа).Есть ли способ сделать это, используя acts_as_taggable_on драгоценный камень?

Для справки, submission имеет теги:

class Submission < ActiveRecord::Base
  searchkick

  acts_as_taggable_on :tags

1 Ответ

0 голосов
/ 11 октября 2018

Вам просто нужно обернуть ваш код в Rails.cache.fetch, например:

class Submission < ActiveRecord::Base
  searchkick

  acts_as_taggable_on :tags

  def self.cashed_tags_counts
    Rails.cache.fetch("cashed_tags", expires_in: 4.hours) do
      tag_counts.order('name ASC').map {|t| [t.name, t.name]}
    end
  end
end

Вот еще информация об этом

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