С этим подходом
before_filter :authenticate_user!
before_filter do
redirect_to new_user_session_path unless current_user && current_user.admin?
end
Это также гарантирует, что все гости будут вынуждены войти в систему. Вам не нужно изменять метод по умолчанию для принудительной аутентификации только для доступа к методу экземпляра admin?
def admin?
self.admin == true
end
Мой подход заключается в создании атрибута роли и сверке его строкового значения с набором предполагаемых ролей - в этом случае он гораздо более гибкий, чем создание множества логических атрибутов.