在rails上的ruby中为不同用户提取最新记录

时间:2012-10-04 05:13:59

标签: sql ruby-on-rails

数据库是这样的:

id testID date
1  100    10/12/2012
2  100    10/13/2012
3  102    10/14/2012

我们将此数据库称为“测试”

我希望输出为ActiveRecord:包含

的关系
id testID date
2  100    10-13-2012
3  102    10-14-2012

我知道如何将结果作为数组获取,如下所示:

result = []
testIDList = Test.uniq.pluck(:testID)
testIDList.each do |tID|
    result = result + Test.where(:testID => tID).order('date DESC').limit(1)
end

在这种情况下,result是一个ActiveRecord:Relation数组 但我希望结果是ActiveRecord:Relation,我试图使用merge没有成功。

2 个答案:

答案 0 :(得分:1)

尝试

   result = Test.order(:date).group(:testID)

答案 1 :(得分:0)

试试这个:

result = Test.where(:testID => testIDList)
             .select("max(`date`) as recent_date").group(:testID)