ссылка на родительскую модель во многих ассоциациях и таблицах объединения - Rails 3 - PullRequest
0 голосов
/ 11 декабря 2011

Итак, у меня есть книги и модели авторов.

Books has_many authors и Authors has_many books

На моих маршрутах книги вложены в авторах, и у меня есть таблица соединений, которая соединяетдва (authors_books).

Таким образом, здесь будет путь к книгам: authors/1/books

Мой вопрос в том, есть ли в моей модели функция, выполняющая XYZ для поиска /создавать новые книги с помощью find_or_create_by method - как мне убедиться, что он связывает новый / найденный идентификатор книги с идентификатором родительского автора в новой записи в моей таблице соединений author__books?

1 Ответ

1 голос
/ 11 декабря 2011

Вы можете сделать это, создав модель в середине этой ассоциации, вместо использования has_and_belongs_to_many. Из-за отсутствия лучшего названия я бы назвал эту модель Authorship, и она бы выглядела так:

class Authorship < ActiveRecord::Base
  belongs_to :author
  belongs_to :book
end

Тогда вы бы определили ассоциации в вашей Author модели с книгами следующим образом:

class Author < ActiveRecord::Base
  has_many :authorships
  has_many :books, :through => :authorships
end

И наоборот, в вашей Book модели:

class Book < ActiveRecord::Base
  has_many :authorships
  has_many :authors, :through => :authorships
end

Таким образом, вы по-прежнему будете иметь желаемую функциональность «имеет и принадлежит многим», за исключением того, что теперь вы сможете получать доступ к записям в таблице объединения через вновь созданную модель.

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