Ruby on rails 当嵌套模型的名称与控制器名称不同时,如何使用cancan加载嵌套资源?

Ruby on rails 当嵌套模型的名称与控制器名称不同时,如何使用cancan加载嵌套资源?,ruby-on-rails,authorization,cancan,Ruby On Rails,Authorization,Cancan,假设我有一个嵌套在农场模型下的工人模型,那么如何在工人控制器(称为FarmWorkersController)中正确加载工人资源?我试过这个 class FarmWorkersController < ApplicationController load_resource :farm, :parent => true load_resource :class => 'Worker', :through => :farm, :parent => false

假设我有一个嵌套在农场模型下的工人模型,那么如何在工人控制器(称为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
class FarmWorkersControllertrue
加载\u资源:类=>'Worker',:到=>:farm,:parent=>false
#请注意:parent和:class需要在Worker资源行上指定,
#因为控制器(FarmWorkersController)的名称不同于工作者模型名称
结束
。。。但是我得到了错误

undefined method `farm_workers' for #<Farm:0xa87670c>
未定义的方法“农场工人”#
请注意,如果我在农场模型中定义了一个farm_workers()getter,该getter返回工人集合,那么我不会得到错误-尽管没有为索引操作加载工人集合。在任何情况下,我都不想为了使控制器身份验证工作而污染我的模型


(这没关系,但我使用的是mongoid)

未经测试,但根据文档/代码,您应该能够将名称指定为加载资源的第一个参数:

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

谢谢Andy,我尝试了你的答案(使用load_resource:worker而不是load_resource“workers”)。这似乎奏效了!我基本上忽略了第一个论点。谢谢