Rails:播放列表和用户之间的关联

时间:2011-10-25 12:39:47

标签: ruby-on-rails database-design activerecord

我有播放列表,用户和歌曲模型。歌曲可以在任意数量的播放列表中,播放列表可以在用户之间共享,但也可以具有多个“所有者”,其有权修改它们。使用ActiveRecord对此进行建模的最佳方法是什么?

1 个答案:

答案 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'