Промежуточная модель для объединения двух отдельных моделей в Ruby on Rails - PullRequest
0 голосов
/ 18 сентября 2009

Я пытаюсь создать промежуточную модель между двумя моделями, в которой я хотел бы иметь отношения многие ко многим. Я создаю нетипичный проект оформления книги и у меня есть две модели настройки Книга и Персона . Я хотел бы установить промежуточную модель BookCheckOut для отслеживания OutDate и ReturnDate.

Дэн Сингерман предоставил то, что похоже на ответ, который я ищу на вопрос Отношения Ruby On Rails - один ко многим . Моя неопытность без модельного поколения и моя зависимость от строительных лесов, вероятно, вызывают мою проблему. Я пытаюсь определить, как создать не только модель, но и рабочую миграцию базы данных, которая сопровождает ее.

1 Ответ

2 голосов
/ 18 сентября 2009

Я не маэстро рельсов, но есть два способа сделать это, о которых я знаю: has_many :through и has_and_belongs_to_many. Эта статья имеет хороший обзор того, как. Я подозреваю, что вы захотите использовать has_many :through, чтобы вы могли беспрепятственно обращаться к данным в таблице соединений.

Для генерации промежуточной модели вы должны сделать что-то вроде:

script/generate model checkouts person_id:int, book_id:int, checked_out:date, returned:date

В вашей модели Book вы бы добавили (знает ли Rails Person -> "People"? Я думаю, да):

has_many :people, :through => :checkouts
has_many :checkouts, :dependent => true

В вашей модели Person вы бы добавили:

has_many :books, :through => :checkouts
has_many :checkouts, :dependent => true

В вашей модели Checkout (извините, я переименовал ее из вашего примера) вы добавили бы:

belongs_to :person
belongs_to :book

Будьте осторожны с моими примерами - я ухожу из памяти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...