ActiveRecord中的随机记录

我需要通过ActiveRecord从表中获取随机记录。我遵循了2006年Jamis Buck的例子。


但是,我也通过Google搜索遇到了另一种方式(由于新用户的限制,无法通过链接添加属性):


 rand_id = rand(Model.count)

 rand_record = Model.first(:conditions => ["id >= ?", rand_id])

我很好奇这里的其他人是如何做到的,或者是否有人知道哪种方法会更有效。


跃然一笑
浏览 609回答 3
3回答

慕森王

没有至少两个查询,我还没有找到一种理想的方法。以下使用随机生成的数字(直到当前记录数)作为偏移量。offset = rand(Model.count)# Rails 4rand_record = Model.offset(offset).first# Rails 3rand_record = Model.first(:offset => offset)老实说,我一直在使用ORDER BY RAND()或RANDOM()(取决于数据库)。如果您没有性能问题,那么这不是性能问题。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Ruby