2

我试图弄清楚为 aPlaylist和设置模型的逻辑Song

到目前为止,我有:

User has_many :playlists, has_many :songs

Playlist belongs_to :user, has_many :songs

Song belongs_to :user

我不确定我应该如何关联一首歌曲可以属于许多播放列表。

我是要has_and_belongs_to_many :playlists建立一个连接表还是建立一个has_many :through关联?

您可以仅对一个模型进行 HABTM 关联,​​还是必须在您关联的两个模型上声明它?在模型上建立has_and_belongs_to_many :songs关联听起来不正确。Playlist

User和之间的关系Song很好,我只是想实现Playlist. 当然,歌曲不必属于播放列表。

4

3 回答 3

3

通常会有一个具有以下结构的表:

unique_id song_id playlist_id

这允许任意数量的歌曲属于任意数量的播放列表。unique_id 仅适用于新表中的行。

于 2012-04-25T17:08:24.880 回答
2

虽然 HABTM 完全可以工作,但我认为您会想要使用 has_many :through,因为您很可能想要在列表/歌曲关系模型中添加一些额外的信息。例如,歌曲位置。

就像是:

List
  belongs_to :user
  has_many :relationships
  has_many :songs, :through => relationships

Song
  belongs_to :user
  has_many :relationships
  has_many lists, :through => :relationships

Relationship
  belongs_to :song
  belongs_to :list
于 2012-11-07T09:00:41.137 回答
0

这个怎么样。

User:
  has_many :lists 
  has_many :songs

List: 
  belongs_to :user
  has_and_belongs_to_many :songs

Song
  belongs_to :user
  has_and_belongs_to_many :lists
于 2012-11-06T15:49:43.777 回答