Rails, Devise, CanCan или декларативная авторизация

Я разрабатываю приложение на Ruby on Rails, и я дошел до точки, когда я не знаю, какое мое лучшее решение для сценария слежения. Пока я могу создавать пользователей, создавать проекты, связывать пользователей (что-то вроде FB), я могу приглашать пользователей на свой веб-сайт, и теперь я хотел бы разрешить пользователям предоставлять разные уровни доступа к проектам, которые они создали, другим пользователям (что-то подобное с github). Также пользователи после создания учетной записи получат роль суперадмина, таким образом, они смогут управлять своими проектами или назначать проекты своим партнерам. Так что это будет мой лучший вариант между канканом и декларативной авторизацией. Также мне нужна таблица, в которой будут храниться user_id, role_id и project_id, если я буду использовать cancan или декларативную авторизацию?

Спасибо


Я объясню свою проблему лучше. Пока у меня есть пользователь (с разработкой), который может создавать проекты. Итак, если user1 создает проект A, а проект BI хочет, чтобы он мог назначить user2 с ролью admin в проекте A и user2 с ролью модератора в проекте B. Я думал о создании таблицы ссылок UserRoleProject, это хорошая идея ? Или, если нет, пожалуйста, помогите мне с некоторыми указателями.

Действие будет выглядеть примерно так: Пользователь1 выбирает из списка user2, выбирает проект из другого списка (созданного пользователем user1) и выбирает роль, которую user2 будет иметь в этом проекте.

Любой пользователь сможет выполнять то же действие над своими проектами. Также будет n проектов и n пользователей и 3 уровня доступа (админ, модератор, гость).

Спасибо


person user2502761    schedule 19.07.2013    source источник


Ответы (1)


Однажды я сделал огромное приложение с множеством ролей, и каждая роль имела свои наборы доступных действий, и я использовал devise и cancan, и они работают как шарм, они довольно хорошо интегрируются, и обе имеют отличную документацию.

по другому вопросу вы можете сделать что-то вроде этого

модель проекта:

has_one :user
has_many :collaborators, :through => :team

командная модель:

belongs_to :user
belongs_to :project
person Rodrigo Zurek    schedule 19.07.2013