Как настроить две модели, имеющие связь has_many друг с другом - PullRequest
2 голосов
/ 05 января 2011

Я ищу предложение по настройке двух моделей: Учитель и Предмет.У Учителя может быть много Предметов, а у Субъекта может быть много Учителей.Еще одна вещь, которую следует учитывать в отношениях между двумя моделями, заключается в том, что Учитель может создать Предмет и добавить к нему других Учителей.

Я думаю, что я твердо разбираюсь в основах настройки для каждой модели:

для teacher.rb:

has_many :subjects

для subject.rb:

has_many :teachers

, а таблица учителя должна иметь столбец subject_id, а таблица предметов должна иметьСтолбец учителя.

В чем я не уверен, так это в том, как настроить представления (и соответствующие методы контроллера), чтобы разрешить добавление Учителя к предмету.

Любые предложения (илиссылки на примеры) с благодарностью.Я не смог ничего найти в этом конкретном случае.


текущая настройка:

  • стандартный CRUD для объекта Student
  • стандартный CRUDдля объекта Project

Вероятно, мне не хватает чего-то простого в том, как связать эти модели вместе (кроме части изменения has_many на habtm) и получения записей в таблицу subject_teachers, и я все еще могунайти хороший пример ...

1 Ответ

3 голосов
/ 05 января 2011

Вам необходимо построить реляционную таблицу между ними. Невозможно иметь отношения многие-многие без таблицы rel

Во-первых, это has_and_belongs_to_many: дисциплины и has_and_belongs_to_many: учителя (обычно их называют habtm)

http://guides.rubyonrails.org/association_basics.html#the-has_and_belongs_to_many-association

пробег

rails g migration subjects_teachers

открыть миграцию:

create_table :subjects_teachers, :id => false do |t| # ID => FALSE = IMPORTANT
  t.references :subject
  t.references :teacher
  # NO TIMESTAMPS
end

пробег rake db: migrate, и вы должны быть настроены!

тогда

см. Эти сообщения о настройке контроллеров

http://railscasts.com/episodes/17-habtm-checkboxes

http://railscasts.com/episodes/47-two-many-to-many

...