Caching mongoid中是否有缓存查询结果的配置设置?

Caching mongoid中是否有缓存查询结果的配置设置?,caching,ruby-on-rails-3.2,mongoid,Caching,Ruby On Rails 3.2,Mongoid,我有一个有很多菜系的商店模型。以下是控制器操作和编辑表单 app/controllers/shops\u controller.rb class ShopsController < ApplicationController def edit @shop = Shop.where(id: params[:id]).first @cuisines = Cuisine.asc(:name) end end 问题是@cuisines的评估次数是商店菜系数量的两倍。第一次

我有一个有很多菜系的商店模型。以下是控制器操作和编辑表单

app/controllers/shops\u controller.rb

class ShopsController < ApplicationController
  def edit
    @shop = Shop.where(id: params[:id]).first
    @cuisines = Cuisine.asc(:name)
  end
end
问题是@cuisines的评估次数是商店菜系数量的两倍。第一次执行查询后,它不会缓存查询

在搜索和尝试不同的解决方案以减少查询之后,我只能发现使用以下任何一种方法都会有所帮助

@cuisines = Cuisine.asc(:name).to_a


有人能给我推荐其他类似自动缓存的选项吗?

Mongo会缓存查询使用的文档,并将它们保存在RAM中的工作集中:

然而,如果您想缓存特定查询的结果,您可以自己创建一个不同的集合(比如缓存),并将查询结果存储在其中。对于每次查找,首先在缓存中查找,如果在那里找不到,则执行实际查询并将其存储在缓存中以供下次访问。您可能还想使缓存过期,您可以使用TTL:


您可以将TTL设置为“x”分钟,如果再次访问数据,请将TTL再次重置为“x”,以便仅在x分钟内未访问文档时删除文档;或者,如果您的数据在y分钟后发生显著变化,您可以设置“y”的硬限制。只是分享一些方法,您将需要根据您的需求进行实际的实现。

Update-也尝试过这样的方法:渲染部分:'cuisine_fields',locals:{f:f,cuisines:@cuisines}在查询中仍然没有变化。
@cuisines = Cuisine.asc(:name).to_a
@cuisines = Cuisine.asc(:name).entries
@cuisines = Cuisine.asc(:name).cache