1

我正在努力解決這個問題,但至今沒有成功。找到所有沒有報名參加特定課程的學生

我有3個型號。

課程模式:

class Course < ActiveRecord::Base 
    has_many :student_courses 
    has_many :students, :through => :student_courses 
end 

學生型號:

class Student < ActiveRecord::Base 
    has_many :student_courses 
    has_many :courses, :through => :student_courses 
end 

加入型號:

class StudentCourse < ActiveRecord::Base 
    belongs_to :student 
    belongs_to :course 
end 

我試圖發送到僅查看未入學的學生在當前選擇的課程中,所以相反的@ course.students

我發現這個Find all students not enrolled in a class (rails) 除了它不包括沒有註冊任何課程的新生,在這個問題中使用left_outer_joins是一個看起來不適合他們的命題,沒有幫助,因爲我無法更新4.2.5以上的導軌,並且需要導軌5.

任何人都可以想到其他解決方案嗎?

+0

您使用什麼數據庫調用? –

+0

也是這是一個準確的改寫(psudo-sql)你查詢「返回所有'學生'count'(''student_courses'其中'course_id =?')是'0'」 –

回答

1
Student.where.not(id: @course.students).all 
0

課程中的模型,你可以做這樣的事情

class Course < ActiveRecord::Base 
    has_many :student_courses 
    has_many :students, :through => :student_courses 
    ... 
    def not_enrolled_students 
     Student.where.not(id: self.students) 
    end 
end 

現在在你的應用程序的任何地方,你可以Course.first.not_enrolled_students

相關問題