如何在rails中找到每个用户的最新行?

时间:2012-04-04 00:53:04

标签: ruby-on-rails activerecord distinct

Rails如何查询每个user_id的最新lesson_plan记录?

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的行。

很抱歉,如果这是一个重复的问题,我真的四处寻找解决方案。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

可能是它的工作

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