2013-12-10 45 views
1

我使用Ruby on Rails的,我有三個型號條款:Ruby on Rails的,其中有兩個表

藝術家,專輯,曲目

每個軌道都有一個album_id和每張專輯都有一個artist_id

我想找到的所有曲目爲特定的藝術家,像下面這樣:

select track.* from tracks, albums where track.albmum_id==album.id and album.artist_id=5; 

所以我希望能與軌道,我就可以分頁到結束。

我最大的努力到目前爲止,這是但它不工作:

@tracks = Track.joins(:albums).select("track.*").where(artist_id: @artist.id).paginate(page: params[:page]) 

我得到:::的ActionView ::模板錯誤(協會命名爲「相冊」的軌道上沒有找到,也許你拼錯了它?) 我正在使用Rails 4.0.0。

任何想法?

+0

定義「不工作」。你收到一個錯誤?什麼錯誤?另外,哪個版本的Rails? –

+0

你把模型之間的關係嗎?用'has_many'和'belong_to'? – Vucko

+0

我添加了錯誤和版本,是的,我正在使用has_many和belongs_to – Panagiotis

回答

2

你可以建立這樣的relashionship:

class Artist 
    has_many :tracks, :through => :albums 

然後,您可以使用:

a = Artist.first 
a.tracks 

隨着has_many through,查詢將自動爲您生成。

+0

工作就像一個魅力!謝謝! – Panagiotis