У меня есть контакты контроллера, который загружает и авторизует ресурс с помощью cancancan:Override метод канкан, который повышает исключение «неинициализированный постоянный контакт»
class ContactsController < ApplicationController
before_filter :authenticate_user!
load_and_authorize_resource
end
Мой индекс действия никогда не вызывается, поскольку Contact ресурс может быть доступен только в пространстве имен, называемом MongoidContainer. Следовательно, единственным способом доступа к Контакты в моей системе является MongoidContainer :: Contact. Следовательно, когда cancancan пытается загрузить ресурс, исключение возникает здесь:
module CanCan
class ControllerResource
...
def resource_class
case @options[:class]
when false then name.to_sym
when nil then namespaced_name.to_s.camelize.constantize
when String then @options[:class].constantize
else @options[:class]
end
end
...
end
end
Я попытался переопределить этот метод в ContactsController но переопределение никогда не вызывается. Модуль, скорее всего, не включен в пространство имен ApplicationController. Как я могу переопределить этот метод?
Я видел вариант, который сказал, что вы можете передать параметр класса, как это, который работает:
load_and_authorize_resource class: 'MongoidContainer::Contact'
Я просто очень любопытно, почему метод не был переопределен в этой ситуации.