繁体   English   中英

RoR随机四个用户

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM