0

我有三種模式:教師,學生和作業如何通過關聯記錄的屬性來訂購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") 

有什麼建議?

+0

你用這個查詢得到了什麼錯誤? – alf

+0

不是一個錯誤,但訂單不能正常工作。抱歉不清楚。 – dsilver829

回答

2

看來我的原來的查詢是正確的:

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

我原以爲這是行不通的,因爲我已經寫了一個不好的RSpec測試,因爲我沒有很好地處理時間戳。一旦我用Timecop正確處理時間戳,測試就通過了。

對不起。

0

沒有真正測試過,但我相信

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

應該工作

+0

看起來不錯,但我忘了澄清學生應該是獨一無二的。對於獨特的學生,我認爲.group方法是必要的。 – dsilver829

相關問題