gpt4 book ai didi

ruby-on-rails - cancancan load_and_authorize_resource NameError

转载 作者:行者123 更新时间:2023-12-04 03:42:19 24 4
gpt4 key购买 nike

我使用 CanCanCan、Devise 和 Rolify gem 进行身份验证和权限管理。但是当我创建一个新 Controller 时,我收到了这条消息:

NameError in PanelController#dashboard
uninitialized constant Panel

我的面板 Controller :

class PanelController < ApplicationController
load_and_authorize_resource

def dashboard
end
end

当我删除这一行时:load_and_authorize_resource路线有效。但是我可以在没有身份验证的情况下访问它。我需要 PanelModel 才能使用它吗?

我的 AbilityModel 是这样的:

class Ability
include CanCan::Ability

def initialize(user)
user ||= User.new # guest user (not logged in)

alias_action :create, :read, :update, :destroy, :to => :crud

if user.has_role? :admin
can :manage, :all
elsif user.has_role? :user
can [:read], User
can [:update, :edit], User do |account|
account.email == user.email
end
else
# can :read, :all
can [:create, :new], User
end
end
end

昨天我的代码运行良好,但今天我不知道为什么会出现此错误。也许任何人都可以帮助我。

我的路由是给 Controller 的:

  devise_scope :user do
authenticated :user do
# Rails 4 users must specify the 'as' option to give it a unique name
root :to => "panels#dashboard", :as => :panel
end

unauthenticated do
root 'devise/sessions#new', as: :unauthenticated_root
end
end

最佳答案

您可以像这样使用 authorize_resource :class => false 在没有相应模型的情况下使用 CanCanCan

class PanelController < ApplicationController
authorize_resource :class => false

def dashboard
end
end

然后在你的能力范围内:

elsif user.has_role? :user
can :dashboard, :panel

关于ruby-on-rails - cancancan load_and_authorize_resource NameError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32167219/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com