2011-05-17 42 views
0

數量:給定查詢如何減少我試圖做軌道3以下項目

@groups_active = Group.active_groups(current_user) 

active_groups是一個範圍。這個查詢工作正常。那麼我要做到以下幾點:

if @groups_active.count > 9 
    @groups_active[0..10] 
end 

這意味着如果有在@groups_active 10餘項,取適量TOP 10,這多虧了範圍排序是最活躍的。

建議?謝謝

回答

2

我不知道你的問題是什麼。您可以限制查詢結果的數量爲Model.your_scope.limit(10),如果該查詢不適用於SQL LIMIT,則可以使用Model.your_scope.first(10)。這是一個Array#first,它接受一個Fixnum參數作爲預期使用......

+0

我不能這樣做,因爲如果超過10個,我需要先知道,因此如果超過10個,我想顯示一個SEE ALL鏈接。如果我限制或第一,我無法做到這一點。這就是爲什麼我在考慮做所有事情,找出長度,然後在需要時截斷對象,這樣我就不會碰到數據庫兩次。思考? – TheExit 2011-05-17 23:37:39

+2

然後,您應該將其限制爲11,並且可以關閉最後一個項目。這很常見 - 儘管感覺有點不潔,但你沒有做任何意想不到的事情或不尋常的事情。 – coreyward 2011-05-17 23:47:30

+0

非常聰明!很聰明! – TheExit 2011-05-17 23:52:08

0
@groups_active = Group.active_groups(current_user).limit(10) 

,或者你可以在.limit(10)部件添加到您的範圍。

編輯

我會去一個極限(10)請求和一個計數。這可能會更有效,然後檢索20,50或更多的記錄,只使用其中的前10個。 但是,它仍然需要測試和基準測試。

+0

看到上面的評論。 – TheExit 2011-05-17 23:38:29