我有一个Category
模型has_many :items
。这些项目有一个删除的布尔字段,用于检查项目是否已被删除。列出所有类别时,我还要打印该类别中deleted: false
项的计数
这就是我这样做的方式
@categories = Category.includes(:items).all
打印出未删除项目的计数时,我正在
category.items.get_all.count
get_all
是项目模型中的范围
scope :get_all, where(deleted: false)
它已完成工作,但我觉得页面加载时间比我网站上的其他页面慢。有什么办法可以优化这段代码吗?
答案 0 :(得分:0)
由于范围N+1
对get_all
items
的{{1}}执行查询,您收到了category
次查询。
缓慢加载时间问题的实际解决方案取决于哪个查询使其变慢。如果需要帮助,请参阅服务器查询日志以找出并发布它们。
N+1
查询问题可以通过在Ruby
本身获取计数来解决:
category.items.select{|i| !i.deleted}.count