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!
в действиях вместо.