Несколько пользователей Devise: несколько моделей или наследование?

В моем приложении Rails с Devise я планирую создать несколько типов пользователей (студент, учитель и администратор). У них есть ряд общих атрибутов, таких как имя пользователя, электронная почта, пароль и т. д., но с некоторыми отличиями. Учащиеся смогут взаимодействовать с контентом, размещенным учителями (и, возможно, друг с другом), учителя могут создавать классы и публиковать контент и взаимодействовать со своими учениками, а администратор, вероятно, будет контролировать почти все (включая удаление пользователей, контента и т. д.). .)

Я пытаюсь найти лучший способ сделать это и, желательно, с наименьшими головными болями, поскольку я все еще новичок в Rails. Должен ли я создавать несколько моделей Devise, по одной для каждого типа пользователя, или я должен наследовать несколько моделей от пользователя (что, как я полагаю, называется наследованием одной таблицы?). Я вполне готов попробовать любой из них, но я не уверен, какой из них лучший способ пойти


person mc92    schedule 18.09.2016    source источник
comment
Devise выполняет аутентификацию, но в ваших примерах вы запрашиваете авторизацию — это не одно и то же. Взгляните на CanCanCan или Pundit или на любой из многих других жемчужин авторизации. Возможно, вы захотите использовать Rollify или собственную реализацию ролей, чтобы упростить задачу.   -  person MarsAtomic    schedule 18.09.2016


Ответы (1)


Если вам нужны разные уровни авторизации (например, администратора и пользователя), вы можете использовать Pundit.

Если у вас есть разные роли с одинаковыми правами доступа (например, Студент и Учитель в одном контексте), вам следует использовать Наследование и Проблемы, возможно, определив базовый контроллер, от которого могут быть получены все остальные контроллеры.

person Marco Sanfilippo    schedule 19.09.2016