我是Rails的新手(最新版本的3.2),如果这是一个简单的问题,请原谅我。
我希望模仿艺术家 - 歌曲 - 专辑的关系。歌曲属于艺术家,专辑也属于艺术家。当然,艺术家可以拥有多首歌曲和专辑,但每首歌曲和专辑只能属于一位艺术家。一首歌可以选择是专辑的一部分,也可以只是一首独立歌曲。
这主要是最后一部分让我感到沮丧。我认为Artist
应has_many :songs, through: :albums
,但协会的方向让我感到困惑。我不确定如何解释从另一个方向发展的关系,从可选的Song
到Album
关系,以及Song
和Album
到{{1 }}。
有人可以帮忙解决这个问题吗?谢谢!
答案 0 :(得分:0)
我认为艺术家应该直接拥有很多歌曲,而艺术家可以拥有一首没有专辑的歌曲。您仍然可以通过相册访问艺术家的歌曲:
@artist = Artist.find_by_name("Prince")
@artist.albums.find_by_name("Purple Rain").songs
或直接:
@artist.songs.find_by_name("When Doves Cry")
然后这可能是他们在模型中的相关性:
class Artist < ActiveRecord::Base
has_many :songs
has_many :albums
class Album < ActiveRecord::Base
has_many :songs
belongs_to :artist
class Song < ActiveRecord::Base
belongs_to :artist
belongs_to :album
end
你可以做另一个方向:
@song.artist.name = "Prince"
@song.album.name = "Purple Rain"