Роли, которые основаны на пользователях <> Project - PullRequest
0 голосов
/ 14 сентября 2010

В настоящее время я использую Devise & CanCan, который позволяет мне создавать Пользователи с ролями, использующими таблицу (Roles_Users).

Это хорошо, но я хочу, чтобы в моем приложении были проекты каждый проект для пользователя может иметь такую ​​роль, как (Admin, Viewer, и т. д. IE, роли назначаются не пользователям, а пользователям в зависимости от того, в каких проектах они участвуют.

Примеры:

  • Пользователь X принадлежит проекту A с ролью администратора
  • Пользователь X принадлежит проекту B с гостевой ролью
  • Пользователь Y принадлежит проекту B с ролью наблюдателя

Какая модель подойдет для этого?

Модели

Пользователи has_many: проекты проектов ? Роли ?

Users_Roles_Projects (user_id, project_id, role_id)

Что ты думаешь? Я новичок и мог бы использовать понимание и думая от вас хорошо опытных людей. Спасибо!

1 Ответ

1 голос
/ 15 сентября 2010

Вы должны взглянуть на has_many: through.Этот Railscast должен запустить вас и запустить: http://railscasts.com/episodes/47-two-many-to-many

Например, вы можете иметь Проекты пользователя has_many через членство (я уверен, что вы можете придумать лучшее имя!)

Ваша модель Users будет содержать стандартные данные пользователя, модель Projects будет содержать детали проекта, и, возможно, у вас есть какая-то модель ролей (я не использовал ни одну из упомянутых вами библиотек, поэтому не могу комментировать с точки зрения их работы).).Ключом является модель Memberships.

Модель членства будет содержать userID, projectID и roleID.В базе данных должен быть только один экземпляр любого данного идентификатора userID и projectID, поэтому, сохраняя roleID вдоль этой пары, вы можете назначить роль этому пользователю в указанном проекте.

...