2010-09-08 29 views
0

有谁知道我如何在RoR中显示4个随机用户的列表。RoR随机四位用户

我知道有rand()方法,但我必须以某种方式将它应用于数组。

回答

2

如果表中没有包含太多的条目下面将返回4个随机选择的用户:

User.find(:all, :order => 'RANDOM()', :limit => 4) 

然而,这并不比例的,因为它会随机整个表。对于有很多列的表,这可能是非常密集的IO。

另一种方法是只对id进行随机化,然后只选择那些行。沿着线的东西:

# Return an array of ids randomly drawn from User 
ids = ActiveRecord::Base.connection.select_values(
     User.send(:construct_finder_sql, { :select => 'id', 
              :order => 'RANDOM()', 
              :limit => 4 
             })) 

# Return the users drawn from above 
users = User.find(:all, :conditions => "id IN (#{ids.join(',')})") 

如果用这个去了,我想将其封装为User一个类的方法。

+0

这就是我得到的:SQLite3 :: SQLException:没有这样的函数:rand: – Brian 2010-09-08 01:57:27

+0

对于SQLite,函数是'RANDOM()'。 – rjk 2010-09-08 02:10:40