У меня есть пользовательская модель, созданная с помощью Devise, которая имеет логическое поле администратора и целое поле ролей. Я пытаюсь создать класс способностей, который позволяет пользователю без прав администратора иметь определенные способности, основанные на ролях, но у меня есть проблемы с этим процессом. Я создал авторизованный контроллер как таковой:
class AuthorizedController < ApplicationController
before_filter :authenticate_user!
check_authorization :unless => :devise_controller?
load_and_authorize_resource
rescue_from CanCan::AccessDenied do |exception|
flash[:alert] = exception.message
redirect_to root_url
end
end
class Ability
include CanCan::Ability
def initialize(user)
if !user
can :read, :all
end
if user
admin_rules if user.admin?
commenter_rules if user.role.equal?("1")
author_rules if user.role.equal?("2")
end
end
def admin_rules
can :manage, :all
end
def commenter_rules
can :manage, Data, :active => true, :user_id => user.id
end
def author_rules
can :manage, Post, :active => true, :user_id => user.id
end
end
Теперь, когда я пытаюсь получить доступ к каким-либо страницам, выдается сообщение об исключении «Вы не авторизованы для доступа к этой странице». вместо того, чтобы иметь доступ к этой части сайта.