0

一所学校有很多课程。一门课程有很多部分。学生注册课程的一部分。我希望能够找到学校里所有的学生。

Class School < ActiveRecord::Base
  has_many :courses
  has_many :sections, :through => courses
  has_many :students, :through => courses, :through => sections, :through => enrollments
end

Class Course < ActiveRecord::Base
  belongs_to :school
  has_many :sections
  has_many :students, :through => sections, :through => enrollment
end

Class Section < ActiveRecord::Base
  belongs_to :course
  has_many :students, :through => enrollment
end

Class Student < ActiveRecord::Base
  has_many :sections, :through => enrollment
  has_many :courses, :through => sections, :through => enrollment
  has_many :schools, :through => courses, :through => sections, :through => enrollment
end

当学生注册课程的该部分时,注册只是一个包含部分 ID 和学生 ID 的表格。

有没有更好的方法来做我想做的事情?

谢谢。

4

1 回答 1

0

我不确定我是否正确,但我会做一组稍微不同的关系:学校有很多课程,课程有很多部分,部分有很多学生通过招生。这将导致以下模型:

class School < ActiveRecord::Base
  has_many :courses
end

class Course < ActiveRecord::Base
  belongs_to :school
  has_many :sections
end

class Section < ActiveRecord::Base
  belongs_to :course
  has_many :enrollments
  has_many :students, :through => :enrollment
end

class Enrollment < ActiveRecord::Base
  belongs_to :section
  belongs_to :student
end

class Student < ActiveRecord::Base
  has_many :enrollments
  has_many :courses, :through => :enrollment
end

这将允许正确引用各种数据。例如,我想查看第一所学校所有课程的所有部分的所有学生。然后我会使用这样的东西:School.first.courses.map(&:sections).flatten.map(&:students).flatten. 我相信您将能够进一步详细说明这一点。

于 2012-01-15T22:19:18.917 回答