Я хочу сделать систему управления записями. В системе будет 4 разных роли пользователя: Admin
, Viewer
, Editor
и Reviewer
.
В то время как первые два легко реализовать с помощью таких жемчужин, как cancan и декларативная авторизация, два других не так просты.
В основном каждая новая запись создается Admin
(только администратор может создавать новые записи) и должна иметь свои отдельные роли Editor
и Reviewer
. То есть пользователю может быть назначено много разных ролей в разных записях, но не в других, поэтому пользователю может быть назначено Editor
ролей для записи A и C, но не B и т. д.
Редактор: может вносить изменения в запись и будет иметь доступ к определенным методам в контроллере, таким как редактирование и т. д.
Рецензент: сможет просмотреть (просмотреть изменения), внесенные в запись, и либо одобрить ее, либо отправить комментарии и отклонить.
Средство просмотра: может просматривать только самую последнюю утвержденную версию каждой записи.
Существуют ли какие-либо способы обработки таких ролей пользователей, зависящих от записи?