2013-07-13 29 views
0

好吧,我有棘手的問題紅寶石。 我有類別和文件的文件下面的1類別。文獻僅下面在類別例如2級:(請原諒塊引號)計數文件

貓1 - >第1組 - > [文檔1,文檔2,文檔3]

--> Group 2 --> [Doc 4, Doc 5, Doc 6] 

貓2 - >第1組 - > [文檔7]

--> Group 2 --> [Doc 8] 

我已經成功地確定在每個類別的文檔的數量在第二級,此代碼:

category.associated_docs.count 
(例如,在組1)。

但是,如何查找1級類別的所有子項中的文檔總數?

我知道我能做到以下幾點,但如何我得到的總和?

category.children.each do |category| 
    category.associated_docs.count 

謝謝!

回答

1

如果文件是在ActiveRecord的,那麼你可能需要做一個SQL查詢來高效地選擇所有相關文檔,然後在這些進行計數。否則涉及ruby對象數組迭代的命令可能需要很長時間。

否則,你可能會想嘗試像下面這樣:

category.children.map {|類別| category.associated_docs} .flatten.count

地圖命令將返回含有許多子陣列,每個包含爲每個類別相關聯的文檔的陣列。 flatten命令將它們合併到一個單級數組中,使用count對它們進行計數是相當簡單的。

+0

現貨與Ruby代碼!像魅力一樣工作!謝謝 –