Получить все строки, которые объединяются через список значений в Rails - PullRequest
0 голосов
/ 17 марта 2020

У меня есть две таблицы (модели):

  1. Студенты
  2. Курсы

Они оба связаны через таблицу под названием course_enrollments

В рельсах они настроены так:

Student.rb:
has_many :courses, through: course_enrollments

Course.rb:
has_many :students, through: course_entrollments

CourseEntrollment.rb:
belongs_to :student, foreign_key...
belongs_to :course, foreign_key..

Я хотел бы получить всех Студентов, которые зачислены на все курсы по заданным c список курсов, что-то вроде этого:

courses_list = current_professor.courses_teaching
student_list = Student.eager_load(:some_table_I_have_to_load).join_with_all_courses(courses_list).order(sort_attributes).paginate....

Мой вопрос: как мне go сделать это? Я не слишком силен в SQL и ломаю голову, пытаясь понять, что мне нужно. Я подумал, что перед order мне нужно поместить какое-то соединение или оператор where, но мне трудно понять, что и как делать правильно

Большое спасибо!

1 Ответ

1 голос
/ 17 марта 2020

Если courses_list - это отношение. это довольно просто сделать:

student_list = Student.joins(:course_enrollments).where(course_enrollments: { course_id: courses_list.ids })
...