Rails Active Record Query - 查找满足条件的随机记录

时间:2012-11-08 12:44:55

标签: ruby-on-rails ruby-on-rails-3 activerecord random

我有一个模型,我想从中拉出符合特定条件的随机记录。例如:从表Thing中给我一条随机记录,其中column_name = true。

要从模型中获取随机记录,我可以执行以下操作:

Thing.offset(rand(Thing.count)).first

我希望将其与查询结合起来:

Thing.where("column_name = ?", true).all

这不起作用:

counter = Thing.where("column_name = ?", true).count
Thing.where("column_name = ?", true).offset(rand(counter)).first

非常感谢有关如何编写此查询的任何想法。

1 个答案:

答案 0 :(得分:0)

这应该适合你:

  counter = Thing.where("column_name = ?", true).count
  Thing.where("column_name = ?", true).limit("#{rand(counter)}, 1").first

返回从表格外的某处读取的一行。