实际上,基本模型的定义如下:
class Song
belongs_to :album
end
class Album
has_many :songs, dependent: :destroy
belongs_to :genre
end
现在我想从说genre_id = 10的专辑中找到所有歌曲,我该怎么做?
.songs
关联仅适用于单个专辑对象。
实际上,基本模型的定义如下:
class Song
belongs_to :album
end
class Album
has_many :songs, dependent: :destroy
belongs_to :genre
end
现在我想从说genre_id = 10的专辑中找到所有歌曲,我该怎么做?
.songs
关联仅适用于单个专辑对象。
您可以使用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 看起来有点奇怪,但你可以给他们起合适的名字。