@groups_active = Group.active_groups(current_user)
active_groups是一個範圍。這個查詢工作正常。那麼我要做到以下幾點:
if @groups_active.count > 9
@groups_active[0..10]
end
這意味着如果有在@groups_active 10餘項,取適量TOP 10,這多虧了範圍排序是最活躍的。
建議?謝謝
@groups_active = Group.active_groups(current_user)
active_groups是一個範圍。這個查詢工作正常。那麼我要做到以下幾點:
if @groups_active.count > 9
@groups_active[0..10]
end
這意味着如果有在@groups_active 10餘項,取適量TOP 10,這多虧了範圍排序是最活躍的。
建議?謝謝
我不知道你的問題是什麼。您可以限制查詢結果的數量爲Model.your_scope.limit(10)
,如果該查詢不適用於SQL LIMIT
,則可以使用Model.your_scope.first(10)
。這是一個Array#first
,它接受一個Fixnum參數作爲預期使用......
@groups_active = Group.active_groups(current_user).limit(10)
,或者你可以在.limit(10)
部件添加到您的範圍。
編輯
我會去一個極限(10)請求和一個計數。這可能會更有效,然後檢索20,50或更多的記錄,只使用其中的前10個。 但是,它仍然需要測試和基準測試。
看到上面的評論。 – TheExit 2011-05-17 23:38:29
我不能這樣做,因爲如果超過10個,我需要先知道,因此如果超過10個,我想顯示一個SEE ALL鏈接。如果我限制或第一,我無法做到這一點。這就是爲什麼我在考慮做所有事情,找出長度,然後在需要時截斷對象,這樣我就不會碰到數據庫兩次。思考? – TheExit 2011-05-17 23:37:39
然後,您應該將其限制爲11,並且可以關閉最後一個項目。這很常見 - 儘管感覺有點不潔,但你沒有做任何意想不到的事情或不尋常的事情。 – coreyward 2011-05-17 23:47:30
非常聰明!很聰明! – TheExit 2011-05-17 23:52:08