2011-06-03 48 views
0

有沒有一種有效的方式來獲得記錄,而渴望加載協會計數? Post.includes({:comments => :author}).count產生的SELECT COUNT(DISTINCT id) ... LEFT OUTER JOIN ...這遠非最佳。也許一些分頁插件以一種聰明的方式做到這一點?計數和關聯迫切加載

EDT Kaminari gem能夠正確地做到這一點,儘管只適用於指定的範圍。

+0

所以,你想做急切的加載,但有鐵軌不急於加載,而只是給你計數?爲什麼不首先要求點數?對不起,如果我誤解了......你能舉一個更現實的例子嗎? – 2011-06-03 15:11:43

+0

@Max好吧,帖子的數量並不取決於什麼關聯加載。這個例子是完全現實的 - 我在不同的動作中有不同的謂詞,但視圖是相同的,所以應該加載相同的關聯。所以,爲了保持乾爽,我有'before_filter {@posts = Post.include(...)}'。在行動中,我有'@posts = @ posts.where(...); @pages = @ posts.count/@@ items_per_page' – synapse 2011-06-03 16:01:39

+0

所以,當你想知道有多少人時,你已經加載了@posts?然後只是做@ posts.size。我想我仍然在誤解你。你能用你的控制器的所有相關代碼編輯你的OP,你想做什麼? – 2011-06-06 11:11:10

回答

0

你試過count_by_sql

+0

問題的關鍵在於避免使用任意的SQL – synapse 2011-06-03 18:56:23