2012-10-04 60 views
2

數據庫是這樣的:拉最近的記錄爲紅寶石不同用戶在軌道上

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 

在這種情況下,結果是一個ActiveRecord數組:關係 但我想結果是一個ActiveRecord:關係,我試圖使用合併沒有成功。

回答

0

試試這個:

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

不工作。 Test.where(:testID => testIDList)與Test相同。 .select(「max('date')as recent_date」)也是失敗的。 :( – user1718990

1

嘗試

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

Test.order(:date)有效,但使用.group(:testID)失敗。我認爲它不知道如何將它們組合在一起。 – user1718990

+0

確定該字段的名稱只是testID –