Как загрузить вложенный ресурс, используя Cancan, когда имя вложенной модели отличается от имени контроллера?
-
12-10-2019 - |
Вопрос
Учитывая, что у меня есть рабочая модель, которая вкладывается в модель фермы, как мне правильно загрузить ресурс работника в рабочем контроллере (называемый фермерским хозяйством)? Я пробовал это ...
class FarmWorkersController < ApplicationController
load_resource :farm, :parent => true
load_resource :class => 'Worker', :through => :farm, :parent => false
# Note that :parent and :class need to be specified on the Worker resource line,
# as the name of the controller (FarmWorkersController) is different from Worker model name
end
... но я получаю ошибку
undefined method `farm_workers' for #<Farm:0xa87670c>
Обратите внимание, что если я определяю Getter () Farm_workers () в модели фермы, которая возвращает сборник работников, то я не получаю ошибку - хотя сборник работников не загружена для индекса. В любом случае, я не хочу загрязнять свою модель, чтобы сделать аутентификацию контроллера.
(Это не должно иметь значения, но я использую монгоид)
Решение
Непроверенный, но в соответствии с документами/кодом вы сможете указать имя как первый аргумент load_resource
:
load_resource :worker, :class => 'Worker', :through => :farm, :parent => false
Не связан с StackOverflow