views:

14

answers:

0

I struggle to find a model how to store a playlist with different type of items on it in Rails.

Consider I have

class Track
end

class Album
  has_many :tracks
end

class PlaylistItem
  belongs_to :playable
  belongs_to :playlist
end

class Playable
  belongs_to :playable, :polymorph => true
end

class Playlist
   has_many :playlist_items
end

I think I can use a polymorphic model "Playable" here since the Playlist can contain Tracks, Albums and maybe in the future also Movies.

Also I would like to use STI for Track and Albums since they share some common attributes like title and length but also have totally different attributes.

I modeled it like described here but it does not work. Anybody any idea how to model a Playlist that can contain many items of different kind?