Для создания ролей в проекте можно использовать таблицы: roles, users, users_roles, и тогда каждый пользователь сможет иметь разные роли и наоборот.Но в проекте имеются модели projects - это своеобразные группы с пользователями . Нужно сделать так, чтобы пользователь мог иметь роли в одном проекте а также и в других. То есть я могу быть админом в project1, а в project2 буду модератором.
Не могу понять как реализовать таблицы.
Какие идеи?
В простом случае в users_roles будет первичный ключ на 3 поля: user_id (fk), role_id (fk), project_id (fk)
Приключения будут если потребуется сделать глобальную суперроль на все проекты. Можно сделать users_roles для глобальных прав и отдельно users_project_roles для дополнительных прав на конкретные проекты.
GutOf, а решений всегда может быть много. В этом как раз и есть задача разработчика - угадать вектор дальнейшего развития и использования системы и соответственно этому выбрать решение.