0

私は Rails (最新バージョンの 3.2) を初めて使用するので、これが簡単な質問である場合はご容赦ください。

アーティスト、曲、アルバムの関係をモデル化しようとしています。曲はアーティストのものであり、アルバムもアーティストのものです。もちろん、アーティストは複数の曲やアルバムを持つことができますが、すべての曲やアルバムは 1 人のアーティストにしか所属できません。曲はオプションでアルバムの一部にすることも、単独の曲にすることもできます。

私をつまずかせているのは、主にその最後の部分です。私はそうArtistすべきだと思っhas_many :songs, through: :albumsていますが、協会の方向性が私を混乱させています。Songオプションから へのAlbum関係、および と の両方Songで、他の方向に進む関係をどのように説明すれAlbumばよいかわかりませんArtist

誰かがこれを解決するのを助けることができますか? ありがとう!

4

1 に答える 1

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"
于 2013-06-13T22:29:06.863 に答える