Ruby on rails 如何将我的标记计数缓存为可标记。

Ruby on rails 如何将我的标记计数缓存为可标记。,ruby-on-rails,caching,Ruby On Rails,Caching,我有一个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' %> 而且它们不

我有一个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' %>
而且它们不会经常更改(也许每4小时过期一次的缓存就足够了)。有没有办法在gem上使用
acts\u as\u taggable\u来实现这一点

作为参考,
提交文件
包含以下标签:

class Submission < ActiveRecord::Base
  searchkick

  acts_as_taggable_on :tags
类提交
您只需将代码包装在
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
类提交

您只需将代码包装在
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
类提交

你检查过这个吗:所以我真的不明白。。。缓存何时过期@luisenrikeSay我不想马上得到所有的新标签。。。有没有办法将缓存设置为每4小时过期一次?你检查过这个吗:所以我真的不明白。。。缓存何时过期@luisenrikeSay我不想马上得到所有的新标签。。。有没有办法将缓存设置为每4小时过期一次?在本文:github.com/mbleigh/acts-as-taggable-on/wiki/Caching中,缓存是如何工作的?它似乎在产品模型中创建了字符串字段
cached\u category\u list
,在该字段中存储每个产品的标签。因此,当您调用
product.category\u list
时,您会从product.cached\u category\u列表中获得标记,而不是从tags表中获得标记。在本文中:github.com/mbleigh/acts-as-taggable-on/wiki/Caching,缓存是如何工作的?它似乎在产品模型中创建了字符串字段
cached\u category\u list
,用于存储该字段中每个产品的标签。因此,当您调用
product.category\u list
时,您将从product.cached\u category\u list而不是tags表中获取标记。