2011-03-07 84 views
0

背景:我有一個需要對其「投票」進行排序的帖子列表,然後顯示前50個帖子。增加Rails 3性能的方法

目標:我目前使用.take(50)來實現這一點,因爲使用.limit(50).first(50)顯示了UNSORTED的前50個帖子。

使用.take使應用程序異常緩慢,是否有任何替代方法?

Post.all(:order => "votes", :limit => 50) 

這會生成SQL,只有選定50個員額,但下令:

回答

3

您可以使用類似結合起來限制和秩序的條款。

+1

另外,如果你還沒有它,你可能想要一個投票指數。如果投票是一個關聯而不是一個列,你應該看看「counter_cache」,否則我的答案可能無法工作。 – drewrobb 2011-03-07 21:09:20

+2

Post.order(「votes」)。limit(50).all對於rails3來說會更好 – 2011-03-07 21:26:11

+0

@fd - 你需要'.all'方法嗎? – 2011-03-08 01:02:17