Как загрузить вложенный ресурс с помощью cancan, если имя вложенной модели отличается от имени контроллера? - PullRequest
1 голос
/ 19 января 2011

учитывая, что у меня есть модель Worker, которая вложена в модель Farm, как правильно загрузить ресурс Worker в контроллер Workers (называемый FarmWorkersController)? Я пробовал это ...

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>

Обратите внимание, что если я определю метод получения farm_workers () в модели Farm, который возвращает коллекцию Workers, я не получу сообщение об ошибке - хотя коллекция Workers не загружается для действия index. В любом случае, я не хочу загрязнять мою модель, чтобы заставить аутентификацию контроллера работать.

(это не имеет значения, но я использую монгоид)

1 Ответ

3 голосов
/ 19 января 2011

Не проверено, но в соответствии с документами / кодом вы должны иметь возможность указать имя в качестве первого аргумента для load_resource:

load_resource :worker, :class => 'Worker', :through => :farm, :parent => false
...