1

私は教科書のデータベースを設定しています。Aは次のBookようになります。

  • ID
  • 題名
  • イズブン
  • 著者
  • 科目
  • クラス
  • 大学
  • 教授

本には (明らかに) タイトルまたは ISBN が 1 つしかありませんが、著者、科目、大学、教授を一種の「タグ」にしたいと思います。1 冊の本を複数の著者が執筆し、複数の教授が教える複数のクラスの複数の科目に使用できます。そのため、それぞれに多対多の関係を設定したいと思います。たとえば、次のAuthorようになります。

著者

  • ID
  • 名前

本が著者に属している、またはその逆であるということは必ずしも私には意味がありません (私は間違っているかもしれませんが)。しかし、book_author_associationsテーブル、book_jubjects_associationsモデル、book_classes_associationsモデルなどを作成することも知りません。

このような複数の多対多を作成するための最良の方法は何ですか?

4

2 に答える 2

3

テストはありませんが、理論的には機能するはずです:

Book
  has_many :book_associations
  has_many :associations, through: :book_associations

BookAssociation
  belongs_to :book
  belongs_to :association, polymorphic: true
  validates :book_id, presence: true
  validates :association_id, presence: true
  validates :association_type, presence: true

Author
  has_many :book_associations, as: :association
  has_many :books, through: :book_associations

Subject
  has_many :book_associations, as: :association
  has_many :books, through: :book_associations
于 2013-09-18T15:11:32.967 に答える