如何根据关联记录的属性对Rails集合排序?



我有三个模型:老师、学生和作业

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")

有什么建议吗?

看来我原来的查询是正确的:

teacher.students.group("assignments.student_id").order("MAX(assignments.updated_at) DESC")

我认为它不工作,因为我写了一个糟糕的RSpec测试失败,因为我没有很好地处理时间戳。一旦我使用Timecop正确地处理时间戳,测试就通过了。

对不起。

没有真正测试,但我相信

teacher.students.includes(:assignments).order('assignments.updated_at')

应该

最新更新