2011-10-25 25 views
1

我有播放列表,用戶和歌曲模型。一首歌可以放在任意數量的播放列表中,播放列表可以在用戶之間共享,但也可以有多個有權修改它們的「所有者」。用ActiveRecord對此進行建模的最佳方式是什麼?Rails:播放列表和用戶之間的關聯

回答

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' 
+0

這看起來像我現在擁有的東西,但是,如何指定誰將被允許修改播放列表?播放列表對於無權更改的用戶應該是隻讀的。 – Johan

+0

更新後,應該是這樣的話 – davidb