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的行。
很抱歉,如果这是一个重复的问题,我真的四处寻找解决方案。
答案 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)