2013-10-01 91 views
0

我有一個Category模型has_many :items。這些項目具有刪除的布爾字段,用於檢查項目是否已被刪除。當列出所有類別,我也想打印的deleted: false項目總數的該類別rails 4和mongoid減少查詢次數

這是我正在做

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

當打印不刪除的項目數,我]丟

category.items.get_all.count 

get_all爲項模型內的範圍

scope :get_all, where(deleted: false) 

它完成了工作,但我覺得網頁加載時間比我網站上的其他頁面慢。有什麼辦法可以優化這段代碼嗎?

回答

0

由於範圍爲get_all,您將收到N+1查詢,該查詢執行每個categoryitems查詢。

緩慢加載時間問題的實際解決方案取決於哪個查詢使其變慢。如果需要幫助,請參閱服務器查詢日誌以確定併發布它們。

N+1查詢問題可以通過獲取計數Ruby本身來解決這樣的:

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