RoR随机四个用户

时间:2010-09-08 01:43:57

标签: ruby-on-rails

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

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

1 个答案:

答案 0 :(得分:2)

如果表格中没有太多条目,则以下将返回四个随机选择的用户:

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的类方法。