Несколько уровней have_many в модели - PullRequest
0 голосов
/ 27 апреля 2011

Я работаю с Ruby on Rails (в частности, с ActiveRecord) и пытаюсь решить, стоит ли связывать мои модели несколькими уровнями или нет.

class Student < ActiveRecord::Base
  has_many :student_sections
  has_many :sections, :through => :student_sections
  has_many :courses, :through => :sections
end

Кажется, это такбудет работать, но у меня нет большого опыта в ActiveRecord.Есть ли причина не делать этого?

Ответы [ 2 ]

2 голосов
/ 27 апреля 2011

Это хорошо, но вы должны иметь в виду, что ассоциация курсов - это всего лишь ассоциация «получить» (в отличие от «получить и установить»). Под этим я подразумеваю, что вы можете сказать

@student.courses

(после исправления neo), чтобы получить список курсов, но вы не можете сделать

@student.courses << @ course </p>

, поскольку у рельсов нет информации о разделе, необходимой для создания необходимых соединений между студентом и курсом.

0 голосов
/ 27 апреля 2011

нужно добавить: атрибут источника

has_many :sections, :through => :student_sections, :source => 'your_source'
...