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

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

有什么建议么?

===============>>#1 票数:2 已采纳

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

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

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

对于那个很抱歉。

===============>>#2 票数:0

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

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

应该管用

  ask by dsilver829 translate from so

未解决问题?本站智能推荐: