Ruby on rails 控制器的未初始化常数
嗨,我正在尝试使用cancan,但我有一个非常恼人的错误,即:未初始化的常量版 对于控制器:Ruby on rails 控制器的未初始化常数,ruby-on-rails,cancan,Ruby On Rails,Cancan,嗨,我正在尝试使用cancan,但我有一个非常恼人的错误,即:未初始化的常量版 对于控制器: class EditionsController < ApplicationController before_filter :authenticate_user! #devise load_and_authorize_resource def index end end 以及这些能力: user ||= User.new # guest user (not logged in)
class EditionsController < ApplicationController
before_filter :authenticate_user! #devise
load_and_authorize_resource
def index
end
end
以及这些能力:
user ||= User.new # guest user (not logged in)
if user.has_role? "admin"
can :manage, Edition
cannot :commission
else
can :read, :commission
end
还有一个问题,我如何为singularname控制器创建cancan功能?
例如,PhotoController问题在于您使用的是自定义类 CanCan试图将控制器类名单数化以匹配模型类名,但有时这并不是我们所期望的: 如果模型类的名称空间与控制器不同,则需要指定:class选项 资料来源: 在我的例子中,我有一个没有模型的类,所以我只是在命令末尾添加了:class=>false:
load_and_authorize_resource :class => false
如果您在ApplicationController中定义了load_和authorize_资源,并且只想为此控制器覆盖它:
class EditionsController < ApplicationController
skip_load_and_authorize_resource
def index
@editions = Edition.accessible_by(current_ability).order(:date)
end
end
你有一个名为Edition的ActiveRecord模型吗?是的,我就是,我将load_和_authorize_资源更改为authorize_资源:class=>false。这种对配置的约定可能非常具有欺骗性。当然还有:版本而不是版本
class EditionsController < ApplicationController
skip_load_and_authorize_resource
def index
@editions = Edition.accessible_by(current_ability).order(:date)
end
end