2017-02-19 9 views
0

私はRailsには新しいので、私はこれをできるだけ説明しようとしています。ビューのために1つのコントローラで2つのモデルを相互に依存して呼び出す

私は三つのモデルがあります、アーティストを催し、そして

アーティストが唯一のIDとARTIST_NAME
フェストだけIDとfestival_name
festival_artistは、ID、artist_id、およびfestival_idが含まれている含まれているが含まれていますfestival_artist

私は足場を使用してFestを作成しました。これは、私のコントローラとshow.html.erbの場所です。私が持っている私のfests_controller.rbで

class Artist < ApplicationRecord 
    belongs_to :festival_artist 
end 

class Fest < ApplicationRecord 
    belongs_to :festival_artist 
end 

class FestivalArtist < ApplicationRecord 
    has_many :artists 
    has_many :fests 
end 

:以下

は私のモデルです未定義のメソッドをスローしかし

def show 
    @festival_artists = FestivalArtist.where(festival_id: @fest.id) 
    @artists = Artist.where(id: @festival_artists.artist_id) 
end 

を、:

def show 
    @festival_artists = FestivalArtist.where(festival_id: @fest.id) 
end 

私が追加しようとしました#エラーのartist_id。

目標は、アーティストが所属するフェスティバルのFestのshow.html.erbページにアーティストの名前を表示することです。 SQLで

それは次のようになります。

SELECT A.artist_name 
FROM festival_artists AS FA 
INNER JOIN artists AS A 
ON FA.artist_id = A.id 

任意の提案ですか?私の専門用語が正しいかどうかわからないので、Googleに何を助けてくれるのか教えてください。

これ以上情報が必要な場合は教えてください。

答えて

2

あなたのモデル構造が100%正しくないと推測します。詳細はhttp://guides.rubyonrails.org/association_basics.htmlをご覧ください。

Railsの中であなたの関連付けを処理する方法にあります。@grizzthedj答えに気づいたよう

  1. HABTMは、(持ち、多くに所属します)。

  2. にhas_many:この場合、関連

を通して、あなたのコードは、あなたがコントローラ

def show 
    @festival_artists = @fest.artists 
end 
+0

ありがとうございます!それはうまくいった。FestivalArtistクラスを変更して単数にする必要がありましたが、それ以降は機能しました。私はその記事をさらに読む予定です。 – Austin

1

FestivalArtistモデルが必要かどうかはわかりません。 ArtistとFestモデルで "has_and_belongs_to_many"を使用すると、これはあなたが探している多対多の関係を実装します。

# fest.rb 
class Fest < ActiveRecord::Base 
    has_and_belongs_to_many :artists 
end 

# artist.rb 
class Artist < ActiveRecord::Base 
    has_and_belongs_to_many :fests 
end 
+0

ではなく、アーティストモデルならばアーティストにアクセスすることができます

class Artist < ApplicationRecord has_many :festival_artists has_many :fests, through: :festival_artists end class Fest < ApplicationRecord has_many :festival_artists has_many :artists, through: :festival_artists end class FestivalArtist < ApplicationRecord belongs_to :artists belongs_to :fests end 

のようになります。 festival_idがなく、festモデルにartist_idがありません。どのように接続されますか? – Austin

+0

右。それを忘れてしまった。ありがとう! – grizzthedj

関連する問題