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

Sql 如何根据关联记录的属性对Rails集合进行排序?,sql,ruby-on-rails,rails-activerecord,active-record-query,Sql,Ruby On Rails,Rails Activerecord,Active Record Query,我有三种模式:教师、学生和作业 class Teacher < ActiveRecord::Base has_many :assignments has_many :students, through: assignments, uniq: true end 然而,我想根据最近提交作业的学生来排列学生名单。具体来说,我希望最新更新作业的学生首先出现,以此类推 我被以下代码卡住了,无法正常工作: teacher.students.group("assignments.student

我有三种模式:教师、学生和作业

class Teacher < ActiveRecord::Base
  has_many :assignments
  has_many :students, through: assignments, uniq: true
end
然而,我想根据最近提交作业的学生来排列学生名单。具体来说,我希望最新更新作业的学生首先出现,以此类推

我被以下代码卡住了,无法正常工作:

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

有什么建议吗?

没有经过测试,但我相信

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

应该可以工作

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

teacher.students.group("assignments.student_id").order("MAX(assignments.updated_at) DESC")
我认为它不起作用,因为我写了一个糟糕的RSpec测试,但失败了,因为我没有很好地处理时间戳。一旦我正确处理了时间戳,测试就通过了


很抱歉。

您在该查询中遇到了什么错误?不是错误,但排序工作不正常。很抱歉不清楚。看起来不错,但我忘了澄清学生应该是独一无二的。对于独特的学生,我认为小组教学法是必要的。
teacher.students.group("assignments.student_id").order("MAX(assignments.updated_at) DESC")