2

と のモデルを設定するロジックを理解しようとしていPlaylistますSong

これまでのところ、私は持っています:

User has_many :playlists, has_many :songs

Playlist belongs_to :user, has_many :songs

Song belongs_to :user

1 つの曲を複数のプレイリストに関連付ける方法がわかりません。

has_and_belongs_to_many :playlistsセットアップして結合テーブルをセットアップしますか、has_many :throughそれとも関連付けを行う必要がありますか?

1 つのモデルだけで HABTM 関連付けを行うことはできますか? それとも、関連付ける 2 つのモデルで 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 に答える