我需要通过ActiveRecord从表中获取一条随机记录.我从Jamis Buck from 2006开始就遵循了这个例子.
然而,我也通过谷歌搜索找到了另一种方式(由于新的用户限制,无法使用链接进行属性设置):
rand_id = rand(Model.count)
rand_record = Model.first(:conditions => ["id >= ?", rand_id])
我很好奇这里的其他人是如何做到这一点的,或者是否有人知道哪种方式更有效.
我需要通过ActiveRecord从表中获取一条随机记录.我从Jamis Buck from 2006开始就遵循了这个例子.
然而,我也通过谷歌搜索找到了另一种方式(由于新的用户限制,无法使用链接进行属性设置):
rand_id = rand(Model.count)
rand_record = Model.first(:conditions => ["id >= ?", rand_id])
我很好奇这里的其他人是如何做到这一点的,或者是否有人知道哪种方式更有效.
如果没有至少两个查询,我还没有找到一个理想的方法来实现这一点.
下面使用随机生成的数字(直到当前记录计数)作为offset.
offset = rand(Model.count)
# Rails 4
rand_record = Model.offset(offset).first
# Rails 3
rand_record = Model.first(:offset => offset)
老实说,我刚刚使用了ORDER BY RAND()或RANDOM()(取决于数据库).如果没有性能问题,这不是性能问题.