0

实际上,基本模型的定义如下:

class Song    
  belongs_to :album  
end

class Album  
  has_many :songs, dependent: :destroy  
  belongs_to :genre  
end

现在我想从说genre_id = 10的专辑中找到所有歌曲,我该怎么做?

.songs关联仅适用于单个专辑对象。

4

1 回答 1

1

您可以使用has_many :through关联。查看Rails 指南了解详细信息。

在您的情况下,您需要做的就是Genre像这样定义类:

class Genre
  has_many :albums
  has_many :songs, through: :albums
end

然后你可以调用songs对象Genre

Genre.find(10).songs

编辑

如果您想要更多类型和歌曲之间的关联,这里有一个解决方法:

class Genre
  has_many :albums
  has_many :artists
  has_many :album_songs, through: :albums, source: :song
  has_many :artist_songs, through: :artists, source: :song
end

这使您可以编写:

Genre.find(10).album_songs
Genre.find(10).artist_songs

May 看起来有点奇怪,但你可以给他们起合适的名字。

于 2013-04-26T08:40:13.067 回答