2011-10-25 12 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 

はその後、モデル間のテーブルを結合作成する必要があります。あなたはまた、編集権限を持つべきユーザーのためのテーブルを生成することができます

create_table :users_playlists, :id => false do |t| 
    t.integer :user_id, :playlist_id 
end 

//編集

は、プレイリストにこれを追加します。

重要明示的にあるが、このようにIDを除外します
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