关于Rails:在使用cancancan时添加没有相应模型的Controller

Adding a Controller without corresponding model while using cancancan

我添加了一个控制器collaborators来管理UsersCompanies之间的特定类型的联接关联。问题是,每当我从collaborators加载任何内容时,都会收到错误

uninitialized constant Collaborator

据我了解,这是因为没有模型Collaborator,并且我正在使用cancancan进行授权。从旧的cancan(请注意不是cancancan)文档中,我已经能够收集到没有相应模型的控制器需要为其手动授权的模型,例如:load_and_authorize_resource :the_model, :parent => false

如果在我的application.rb控制器中禁用load_and_authorize_resource,这似乎起作用。

我的问题是:用cancancan授权没有相应模型的控制器的最佳方法是什么?我可以继续在应用程序控制器中继续load_and_authorize_resource吗?

在此先感谢您。


此链接会有所帮助。

在链接中,我引用

1
2
3
4
5
6
class ToolsController < ApplicationController
  authorize_resource :class => false
  def show
    # automatically calls authorize!(:show, :tool)
  end
end

在您的ability.rb中:

1
2
3
4
5
6
7
class Ability
  include CanCan::Ability

  def initialize(user)
    can :show, :tool
  end
end