У меня есть работа, но я вижу, что CanCan часто упоминается в учебниках вместе с Devise; это значит быть дополняющим или CanCan альтернативой для разработки?
Должен ли я использовать CanCan с Devise?
Ответ 1
CanCan покрывает авторизацию - кому разрешено делать что. Разработать дескрипторы аутентификации. Вы действительно такие? Это то, как они дополняют друг друга. Вы можете использовать один без другого.
См. например http://techoctave.com/c7/posts/34-authentication-vs-authorization.
Ответ 2
Устанавливает проверку подлинности (вход в систему и выход из нее, сеансы обработки и т.д.), но он не обрабатывает авторизацию (разрешая доступ к представлениям или действиям).
Если у вас нетривиальное приложение, вам понадобятся авторизация и, возможно, роли.
CanCan - это очень простой авторизованный Gem, который может работать хорошо, если у вас очень мало ролей и очень простые правила авторизации. http://railscasts.com/episodes/192-authorization-with-cancan
Если у вас много ролей или более сложные правила авторизации, я бы рекомендовал declarative_authorization http://railscasts.com/episodes/188-declarative-authorization
Оба очень хорошо работают с Devise и Rails 2 или Rails 3.
Для реализации ролей у вас есть два варианта: наличие таблицы ролей и таблицы соединений между ролями и пользователями в вашей базе данных; или с помощью плагина role_model http://railscasts.com/episodes/189-embedded-association У вас также будет выбор, если у пользователя может быть только одна роль или много ролей.
надеюсь, что это поможет