Ruby on rails rails 4和mongoid减少了查询的数量

Ruby on rails rails 4和mongoid减少了查询的数量,ruby-on-rails,ruby,mongodb,mongoid,eager-loading,Ruby On Rails,Ruby,Mongodb,Mongoid,Eager Loading,我有一个类别模型,有很多:项目。项目有一个已删除的布尔字段,用于检查项目是否已删除。在列出所有类别时,我还想打印该类别中deleted:false项目的计数 我就是这样做的 @categories = Category.includes(:items).all 当打印出未删除项目的计数时,我正在 category.items.get_all.count get_all是项目模型中的一个范围 scope :get_all, where(deleted: false) 它正在完成工作,但是我觉

我有一个
类别
模型,
有很多:项目
。项目有一个已删除的布尔字段,用于检查项目是否已删除。在列出所有类别时,我还想打印该类别中
deleted:false
项目的计数

我就是这样做的

@categories = Category.includes(:items).all
当打印出未删除项目的计数时,我正在

category.items.get_all.count
get_all
是项目模型中的一个范围

scope :get_all, where(deleted: false)

它正在完成工作,但是我觉得页面加载时间比我网站上的其他页面慢。有什么方法可以优化此代码吗?

由于范围
get\u all
对每个
类别的
项执行查询,您将得到
N+1
查询

加载时间慢的问题的实际解决方案取决于哪个查询使其变慢。请参阅服务器查询日志以了解这一点,如果需要帮助,请发布这些日志

N+1
查询问题可以通过如下方式在
Ruby
中获取计数来解决:

 category.items.select{|i| !i.deleted}.count