我有一个以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
现在,每当我试图查阅任何网页时,它就会发出一个例外的信息:“你不能获准进入这一网页,而不能进入网站的那部分。