我有播放列表,用户和歌曲模型。歌曲可以在任意数量的播放列表中,播放列表可以在用户之间共享,但也可以具有多个“所有者”,其有权修改它们。使用ActiveRecord对此进行建模的最佳方法是什么?
答案 0 :(得分:1)
用户:
has_and_belongs_to_many :playlists
播放列表:
has_and_belongs_to_many :users
has_and_belongs_to_many :songs
曲:
has_and_belongs_to_many :playlists
然后,您需要在模型之间创建连接表。重要的是明确排除这样的id:
create_table :users_playlists, :id => false do |t|
t.integer :user_id, :playlist_id
end
//编辑
您还可以为应具有编辑权限的用户生成表格:
将此添加到播放列表:
has_and_belongs_to_many :editor_users, :class_name => 'User', :foreign_key => 'user_id'
这是用户:
has_and_belongs_to_many :editable_playlists, :class_name => 'Playlist', :foreign_key => 'playlist_id'