Rails - 模型关系建议

Rails - model relationship suggestion

是否可以定义如下关系:

  1. 一个'student'属于一个'group'
  2. 一个'group'有很多'courses'和很多'students'
  3. 一个'student'通过它所属的'group'有很多'courses'

我知道如何再用一个 table(添加一个 student_course table 来保存学生的 ID 及其所属的课程,然后说学生 has_many :courses, through: :student_course).

也就是说,只编辑下面的table就可以实现吗?

class Student
  belongs_to :group
end

class Group
  has_many :students
  has_many :courses
end

class Course
  belongs_to :group
end

试试下面的关联

student.rb

belongs_to :group
has_many :courses, through: :group

group.rb

has many :courses
has many :students

course.rb

belongs_to :group
has_many :students, through: :group

不确定是否可以使用 Rails class 方法,但您可以手动实现。

class Student
  belongs_to :group

  def courses
    group.courses
  end
end

class Group
  has_many :students
  has_many :courses
end

class Course
  belongs_to :group
end