Rails - модель отношений - PullRequest
0 голосов
/ 17 мая 2018

Можно ли определить следующие отношения:

  1. «Студент» принадлежит к «группе»
  2. «Группа» имеет много «курсов» и много «студентов»'
  3. У' студента 'есть много' курсов 'через' группу ', к которой он принадлежит

Я знаю, как сделать это с еще одной таблицей (добавление таблицы student_course, которая содержитидентификатор студента и курс, к которому он принадлежит, а затем говорят, что у студента есть has_many: courses, through:: student_course).

Другими словами, можно ли это реализовать, просто отредактировав следующие таблицы?

class Student
  belongs_to :group
end

class Group
  has_many :students
  has_many :courses
end

class Course
  belongs_to :group
end

Ответы [ 2 ]

0 голосов
/ 17 мая 2018

Не уверен, что вы можете сделать это с помощью метода класса Rails, но вы можете просто реализовать его вручную.

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
0 голосов
/ 17 мая 2018

Попробуйте ниже ассоциации

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
...