0

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

我就是这样做的

@categories = Category.includes(:items).all

当打印出未删除项目的数量时,我正在做

category.items.get_all.count

get_all是项目模型内的范围

scope :get_all, where(deleted: false)

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

4

1 回答 1

0

N+1由于get_all执行items每个查询的范围,您会收到查询category

缓慢加载时间问题的实际解决方案取决于哪个查询使其变慢。如果需要帮助,请查看服务器查询日志以找出并发布它们。

N+1查询问题可以通过获取本身的计数来解决,如下Ruby所示:

 category.items.select{|i| !i.deleted}.count
于 2013-10-01T08:55:06.750 回答