在Rails中随机选择n个对象

时间:2010-01-30 23:56:57

标签: ruby-on-rails

我有一个名为Post的模型,其中有一个名为vote的列,它有大量的帖子

我想随机选择有> = x票的n个帖子。与帖子数量相比,n非常小

最好的方法是什么?我尝试了几种似乎非常低效的方法。感谢

1 个答案:

答案 0 :(得分:2)

如果您使用的是MySQL,则可以随机订购符合条件的所有帖子并选择前n个。

实际查询看起来像

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

没有测试过这个,但是这样的东西应该在Rails中运行:

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