【发布时间】:2017-04-07 21:58:42
【问题描述】:
如何在 Rails 查询中缓存来自数据库的列表?
@total_untagged = Rails.cache.fetch("tags_controller/untagged/@total_untagged", expires_in: 1.hour) do
InventoryApi::BaseEntity\
.joins(@object_type.to_sym)
.includes(:base_entities_tags)
.where({ base_entities_tags: { base_entity_id: nil }})
.size.to_int
end
此代码正在加载 InventoryApi::BaseEntity 模型并将其保存在缓存中,键值为:
tags_controller/untagged/@total_untagged
缓存的结果是一个实例,从数据库中延迟加载,而不是作为具有字段值的类预先加载。
一旦延迟加载,读取缓存时需要再次读取数据库,实际上我没有任何缓存。
如何缓存最终结果,而不是数据库关系?
【问题讨论】:
标签: ruby-on-rails ruby caching activerecord redis