2012-04-04 40 views
2

什麼是Rails的方式來查詢每個user_id的最新lesson_plan記錄?你如何在rails中找到每個用戶的最新行?

class LessonPlan < ActiveRecord::Base 
    belongs_to :user 
end 

我看到的所有帖子都包含連接或子查詢。沒有一個簡單的方法來做到這一點?

我已經試過

LessonPlan.select(['distinct(user_id)', :id, :created_at]).where(:user_id => users).order('created_at DESC') 

將會產生類似的查詢。

SELECT distinct(user_id), id, created_at FROM `lesson_plans` WHERE `lesson_plans`.`user_id` IN (110031, 110032, 110033, 110034) ORDER BY created_at DESC 

但是當我嘗試這個查詢時,它返回重複user_id的行。

對不起,如果這是一個重複的問題,我真的四處尋找解決方案。

+0

哪個數據庫? – 2012-04-04 02:28:23

+0

我們正在使用mysql – Tim 2012-04-04 03:52:17

回答

3

的Rails的ActiveRecord#:

LessonPlan.select([:user_id, :id, 'MAX(created_at)']).group(:user_id).limit(10) 

MySQL的:

select id, user_id, MAX(created_at) from lesson_plans group by user_id limit 10 
0

可能是其工作

LessonPlan.select([:user_id, :id, 'MAX(created_at)']).group(:user_id) 
+0

更正您的查詢,它會給出語法錯誤。 – Vik 2012-04-04 07:58:07

+0

OOPs,對不起,這可以自己解決,無論如何,我只是編輯 – 2012-04-04 08:58:26

相關問題