2016-12-18 28 views
0

著者と書籍の2つのモデルを作成する必要があります。has_manyとbelongs_toモデルのレール

  • first_author:

    テーブル書籍4列を含むであろうintはAuthors_id

  • third_author移入さ#will:intはである#will INTはAuthors_id
  • second_author移入さ#will Authors_id
  • fourth_author移入:intがAuthors_id

が取り込まれ#will私はhas_many :booksテーブルとして使用することはできません本はAuthors_id列を含んでいません。

書籍と著者の間にはどのような関連付けが必要ですか?または、関係を全く作成せず、必要な場合にAuthors_idを取得するメソッドを作成する必要はありませんか?

答えて

0

あなたが参加するテーブルを使用することができます。

rails g model BookAuthors book_id:references author_id:references

、あなたのブックモデルで

has_many :authors, :through => :BookAuthors

し、あなたの著者モデルの

has_many :boooks, :through => :BookAuthors

あなたがここに団体についての詳細を読むことができます: http://guides.rubyonrails.org/association_basics.html 彼らも書籍/著者例を使用:)

+0

おかげブラッドあなたブックモデルで

。しかし、私は 'first_author、second_author'などのフィールドにAuthors_idをどのように設定するのか分かりません。 – thiebo

+0

私はあなたのためにそれを行う必要があります新しい答えを追加しました:)この2番目の答えで – Brad

0

あなたが何をしたいことなどをfirst_authorとsecond_authorレールはすべての作者を参照しようとしている教えです。これは通常の規則ではないため、外部キーをモデル関連に渡して伝えます。あなたの著者モデルで

has_one :first_author, foreign_key: "author_id" 
has_one :second_author, foreign_key: "author_id" 
has_one :third_author, foreign_key: "author_id" 
has_one :fourth_author, foreign_key: "author_id" 

has many :books

+0

、まだ結合テーブルは必要ですか? – thiebo

+0

いいえ、ちょうどそれらを追加してくださいあなたは行くべきです。 – Brad

+0

すばらしいおかげで!私はそれにショットを与えます:) – thiebo

関連する問題