NameError в HomeController#action при использовании CanCanCan Rails

Я новичок в рельсах. Я использую CanCanCan (v1.10) и рельсы (v4.2). Пока я помещаю "authorize_resource" в ApplicationController, я не могу получить доступ к своим домашним страницам.

Пример кода в контроллере приложения:

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 ответ

Вы не должны использовать authorize_resource потому что он пытается угадать название модели из имени контроллера, но у вас нет StaticPage модель в вашем приложении. Вместо этого вы должны позвонить authorize! в начале каждого действия, вот так:

def home
  authorize!
  ...
end

Так что вам нужно удалить authorize_resource от ApplicationController и использовать его только в тех контроллерах, которые имеют связанную модель. Контроллеры без модели должны иметь authorize! в действиях вместо.

Другие вопросы по тегам