我正在使用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 :: Template :: Error(在Track上找不到名为'albums'的关联;也许你拼错了吗?) 我正在使用Rails 4.0.0。
有什么想法吗?
答案 0 :(得分:2)
你可以建立这样的关系:
class Artist
has_many :tracks, :through => :albums
然后,您可以使用:
a = Artist.first
a.tracks
使用has_many through
,系统会自动为您构建查询。