资源名称与模型/控制器名称不同时,Cancan的load_and_authorize_resource

Oat*_*eal 2 resources ruby-on-rails cancan

在我的应用中,我有工作表控制器,模型名称是工作表,但我的路线如下

routes.rb
 namespace :magazine do
  resources :pages, :controller => "sheets" do
    resources :articles do
     resources :comments
Run Code Online (Sandbox Code Playgroud)

这样该网址将是magazine / page / 1 / article ...

在我的Article控制器中,如何调用工作表的load_and_authorize_resource,以便我可以访问相关工作表的文章。我试过了

load_and_authorize_resource :sheet, :class => 'Sheet', :parent => false
load_and_authorize_resource :through => :sheet 
Run Code Online (Sandbox Code Playgroud)

无法访问@ sheet.articles ......

apn*_*ing 5

您有:

 load_and_authorize_resource :page, :class => 'Sheet', :parent => false
Run Code Online (Sandbox Code Playgroud)

您可以使用 @pages

或者您替换为:

 load_and_authorize_resource :sheet, :class => 'Sheet', :parent => false
Run Code Online (Sandbox Code Playgroud)

您可以使用 @sheets


在ArticlesController中,同时获取sheetarticles

load_and_authorize_resource :sheet, :class => 'Sheet'
load_and_authorize_resource :article, :through => :sheet 
Run Code Online (Sandbox Code Playgroud)