我正试图解决这个问题,但直到现在还没有成功。
我有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更新rails,它需要rails 5。
任何人都可以考虑其他解决方案吗?
答案 0 :(得分:1)
Student.where.not(id: @course.students).all
答案 1 :(得分: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