我有三种模式:教师,学生和作业
class Teacher < ActiveRecord::Base
has_many :assignments
has_many :students, through: assignments, uniq: true
end
对于任何给定的老师,我想查找一份独特的学生名单 - 很简单,我只是打电话:
teacher.students
但是,我想根据最近提交作业的人来订购学生名单。具体来说,我希望具有最近更新作业的学生首先出现,依此类推。
我被困在以下代码中,但这不起作用:
teacher.students.group("assignments.student_id").order("MAX(assignments.updated_at) DESC")
有什么建议吗?
答案 0 :(得分:2)
我的原始查询似乎是正确的:
teacher.students.group("assignments.student_id").order("MAX(assignments.updated_at) DESC")
我原本认为它不起作用,因为我写了一个糟糕的RSpec测试,因为我没有很好地处理时间戳。一旦我使用Timecop正确处理时间戳,测试就通过了。
很抱歉。
答案 1 :(得分:0)
没有经过测试,但我相信
teacher.students.includes(:assignments).order('assignments.updated_at')
应该有效