我正在尝试创建一个带有devise,cancancan和rolify的登录系统。设计部分正在工作。我最近添加了cancancan和rolify,我正在尝试测试它们是否有效。
我的康康康能力文件:
class Ability
include CanCan::Ability
def initialize(user)
if user.has_role? :admin
can [:index], Page
else
can [:index,:lecture]
end
end
end
我有一个根页面root to: "pages#index"
它正在工作。如果我在页面控制器的顶部添加load_and_authorize_resource
,例如
class PagesController < ApplicationController
load_and_authorize_resource
def index
end
def lecture
end
end
我在尝试访问它时返回:
NameError in PagesController#index
由以下行生成:
names.inject(Object) do |constant, name|
if constant == Object
* constant.const_get(name)
else
candidate = constant.const_get(name)
next candidate if constant.const_defined?(name, false)
* 是给出错误的行。我还在 rolify 文档中看到,我必须将resourcify
添加到将要使用它的文件中。但是如果我尝试添加它,我会得到一个错误undefined method resourcify
. 我该如何解决这个问题?
检查以下内容:
宝石文件:
gem 'load_and_authorize_resource'
# bundle install after
应用控制器:
class ApplicationController < ActionController::Base
include LoadAndAuthorizeResource
end
页面控制器
class PagesController < ApplicationController
load_and_authorize_resource
....
更多信息在这里加载和授权资源