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

を呼び出すことができます。この

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 

ような何かを行うことができますか? –

+0

これは正確な言い換え(psudo-sql)です。あなたの 'count_''(' student_courses'は 'course_id =? ')が' 0'であるすべての 'students'を返します。" –

答えて

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

あなたは今、どこでも、あなたのアプリにあなたは何のデータベースを使用しているCourse.first.not_enrolled_students

関連する問題