Rails: ассоциации между плейлистами и пользователями - PullRequest
1 голос
/ 25 октября 2011

У меня есть плейлист, пользователь и модель песни.Песня может быть в любом количестве списков воспроизведения, список воспроизведения может быть общим для пользователей, но также может иметь несколько «владельцев», которые имеют право изменять их.Что было бы лучшим способом смоделировать это с ActiveRecord?

1 Ответ

1 голос
/ 25 октября 2011

Пользователь:

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

// Редактировать

Вы также можете создать таблицу для пользователей, которые должны иметь права на редактирование:

Добавить в плейлист:

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'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...