ruby-on-rails - 如何为acts_as_taggable_on 缓存我的tag_counts。
问题描述
我在 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
解决方案
您只需要将代码包装在 中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
推荐阅读
- vector - 如何为“四分之一”圆绘制形状矢量
- android - 创建自定义按钮类以在 Android 中设置样式
- r - (R) 在具有 2 个变量的表对象中应用运行行总和
- html - 图像与文本块重叠
- d - 无法将 main.T 类型的表达式 e 隐式转换为 main.main.T
- ruby-on-rails - 解析 C:/Users/Vanessa/rails_space/config/database.yml 时出现 YAML 语法错误
- c++ - 检查是否在成员函数上下文中
- r - 从 github repos 递归读取文件
- assembly - rodata 部分与文本部分中的装配数据表
- javascript - 如何使用 Javascript “单击”没有 ID 的按钮?