使用CanCanCan Rails时HomeController#动作中的NameError

时间:2015-12-15 03:37:17

标签: ruby-on-rails cancancan

我是铁杆新手。我正在使用CanCanCan(v1.10)和rails(v4.2)。 当我把'#34; authorize_resource"在ApplicationController中,我无法访问我的主页。

applcation控制器中的示例代码:

class ApplicationController < ActionController::Base
  include CanCan::ControllerAdditions
  authorize_resource
  protect_from_forgery with: :exception
  before_action :set_locale

  rescue_from CanCan::AccessDenied do |exception|
    flash[:danger] = t :cancancan_access_denied_text
    redirect_to root_url
  end
end

它向我显示以下错误:

NameError in StaticPagesController#home 

1 个答案:

答案 0 :(得分:0)

您不应该使用authorize_resource,因为它会尝试从控制器名称中猜测模型名称,但您的应用中没有StaticPage模型。相反,您应该在每个操作的开头调用authorize!,如下所示:

def home
  authorize!
  ...
end

因此,您需要从authorize_resource中删除ApplicationController,并仅在具有关联模型的控制器中使用它。没有模型的控制器应该在操作中使用authorize!