2012-11-08 56 views
0

我有一个模型,我想从中抽取满足特定条件的随机记录。例如:给我一个表中的随机记录,其中column_name = true。Rails Active Record Query - 找到满足条件的随机记录

要获得从模型中的随机记录我可以做到以下几点:

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 

有关如何编写此查询的任何想法将不胜感激。

+0

什么是您试图实现的实际查询。你实际上有一个名为“things”的表,其中有一个名为“'column_name'”的布尔列,我知道你在发布时可能已经改变了这些数值,但由于你没有提供堆栈跟踪或任何相关信息,所以很难提供你的帮助 –

+1

刚刚尝试过你的代码,并适应了我的应用程序,它工作正常......错误是什么? –

+0

你是对的,我再次尝试了它,它正在工作,不知道我上次错了什么。 – diasks2

回答

0

这应该为你做它:

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

返回从某处读出表的一行。

相关问题