0

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

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

有什么建议么?

4

2 回答 2

2

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

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

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

对于那个很抱歉。

于 2013-04-18T16:19:20.203 回答
0

没有真正测试过,但我相信

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

应该管用

于 2013-04-18T04:26:33.037 回答