У меня есть модели Course
и Lesson
.Курс имеет несколько уроков.Я хочу найти все уроки для текущего зарегистрированного студента, чтобы создать вид расписания.
У меня есть метод, который возвращает все курсы, которые изучает этот студент.Теперь я хочу получить все уроки из всех этих курсов в @courses
в @lessons
, что-то вроде:
def index
@courses = current_student.find_courses
@lessons = @courses.lessons
end
Возможно ли сделать это как-то просто в одной строке?
Метод find_courses реализован следующим образом:
def find_courses
Course.where("id IN (?)", StudentAssignment.select("course_id").where('student_id == (?)', self.id))
end
Модели:
class Student < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :student_assignments
has_many :courses, :through => :student_assignments
....
class Lesson < ApplicationRecord
belongs_to :room
belongs_to :teacher
belongs_to :course
....
class Course < ApplicationRecord
has_many :lessons, dependent: :destroy
has_many :teacher_assignments
has_many :teachers, :through => :teacher_assignments
has_many :student_assignments
has_many :students, :through => :student_assignments
...