Bac*_*cko 11 ruby random activerecord ruby-on-rails ruby-on-rails-3
我on Rails的3.2.2运行Ruby和我想随机数组元素的位置的ActiveRecord::Relation.
我怎样才能做到这一点?
mu *_*ort 21
您可以随时添加.order('random()')到关系:
ar = Model.where(...).where(...).order('random()')
Run Code Online (Sandbox Code Playgroud)
您甚至可以将其添加为范围:
class Model < ActiveRecord::Base
scope :randomize, order('random()')
end
Run Code Online (Sandbox Code Playgroud)
有几点需要注意:
random(),MySQL使用rand(),我不确定其他数据库.ORDER BY random()在数据库中可能非常昂贵,所以你不想使用它,除非你的WHERE子句(即.where调用)将限制你将应用的结果集的大小ORDER BY random()..limit将在ORDER BY 之后应用,因此x.limit(n).order('random()')将ORDER BY应用于所有,x然后limit(n)在排序后应用.这是(2)中的警告来自的地方.| 归档时间: |
|
| 查看次数: |
4946 次 |
| 最近记录: |