2010-01-30 19 views
4

我有一個名爲Post模型,一個叫票列,並將它具有職位選擇不適用使用情況,任意對象的Rails

的一個大數字我想選出n個職位隨機有> = X的選票。 n與帖子數量相比非常小

這樣做的最佳方式是什麼?我嘗試了一些看起來效率很低的方法。謝謝

回答

2

如果你使用的是MySQL,你可以隨機排列所有滿足大於標準的帖子,並選擇前n個。

的實際查詢看起來像

SELECT * FROM posts WHERE votes >= x ORDER BY rand() LIMIT n 

沒有測試過這一點,但這樣的事情應該在Rails的工作:

Post.all(:conditions => ["votes >= ?", x], :order => "rand()", :limit => n) 
+0

這是不行的,因爲沒有「票」帖子表中的列。 – 2010-01-31 01:19:07

+0

你的意思是它應該是'vote'而不是? – Anurag 2010-01-31 01:51:51

+0

我發佈了一個新問題,詢問此操作是如何在內部執行的http://stackoverflow.com/questions/2171082/in-which-order-rails-does-the-db-queries – Victor 2010-01-31 08:50:05

相關問題