Как загрузить вложенный ресурс, используя Cancan, когда имя вложенной модели отличается от имени контроллера?

StackOverflow https://stackoverflow.com/questions/4735996

Вопрос

Учитывая, что у меня есть рабочая модель, которая вкладывается в модель фермы, как мне правильно загрузить ресурс работника в рабочем контроллере (называемый фермерским хозяйством)? Я пробовал это ...

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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top