2 つのテーブルと結合テーブルがあります。
モデル 1:
class Book < ActiveRecord::Base
has_many :book_people
has_many :illustrators, through: :book_people, class_name: 'ComaPerson', foreign_key: 'illustrator_id'
has_many :authors, through: :book_people, class_name: 'ComaPerson', foreign_key: 'author_id'
結合テーブル:
class BookPerson < ActiveRecord::Base
belongs_to :book
belongs_to :illustrator, class_name: 'ComaPerson', foreign_key: 'illustrator_id'
belongs_to :author, class_name: 'ComaPerson', foreign_key: 'author_id'
モデル2(私に問題を与えているもの):
class ComaPerson < ActiveRecord::Base
has_many :book_people #<-- not working
has_many :books, :through => :book_people
BookPerson モデルに coma_person_id 列がないため、私のテストは失敗しています。
Failures:
1) ComaPerson should have many book_people
Failure/Error: it { should have_many(:book_people) }
Expected ComaPerson to have a has_many association called book_people (BookPerson does not have a coma_person_id foreign key.)
# ./spec/models/coma_person_spec.rb:5:in `block (2 levels) in <top (required)>'
ComaPerson はイラストレーターまたは著者のいずれかになる可能性があるため、結合テーブルでillustrator_id
andを使用しauthor_id
たため、結合テーブルには「book_id、illustrator_id、および author_id」の 3 つの列があります。それが機能するには、coma_person_id 列を結合テーブルに追加する必要があるということですか?