有谁知道如何在RoR中显示4个随机用户的列表。
我知道有rand()方法,但我不得不以某种方式将它应用于数组。
答案 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
的类方法。