[英]RoR random four users
有谁知道我如何在RoR中显示4个随机用户的列表。
我知道有rand()方法,但是我将不得不以某种方式将其应用于数组。
如果表中没有太多条目,则以下内容将返回四个随机选择的用户:
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
的类方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.