我有以下情况:
学生are_to并且有很多课程,
课程有很多课程
课程属于课程
这是我目前的模特:
class eventHandler(object):
def create_event(self, event):
"""A general note here.
:tagged param event:
description
:tagged type event:
:class: `another class` # I do not understand the comma splices ( ` ).
"""
# I do not understand why it ends here with no real purpose. Perhaps I'm not catching on to something.
def next_event(self, event):
...
# Continues with the same logic from above
因此,学生被分配到一门或多门课程,而课程有很多课程。 我如何对其进行建模,以便我可以检索学生和所有属于课程的学生的所有课程的所有课程?
答案 0 :(得分:1)
使用原生has_and_belongs_to_many
关系并指定Student
有多个Lessons
到 Courses
:
class Student < ActiveRecord::Base
has_and_belongs_to_many :courses
has_many :lessons, through: :courses
end
class Course < ActiveRecord::Base
has_and_belongs_to_many :students
has_many :lessons
end
class Lesson < ActiveRecord::Base
belongs_to :course
end
这是HABTM关系的迁移:
class CreateStudentsCourses < ActiveRecord::Migration
create_table :students_courses, id: false do |t|
t.belongs_to :student, index: true
t.belongs_to :course, index: true
end
end
通过这种方式,您可以获得所有学生的课程@some_student.lessons
,但不幸的是,您无法获得@some_lesson.students
,因为没有belongs_to :through
关联,但您可以委派students
方法:
class Lesson < ActiveRecord::Base
belongs_to :course
delegate :students, to: :course
end
这样,调用@lesson.students
,方法students
将在关联的Course
上调用,该方法已定义此方法。