CanCanCan用于非模型的自定义控制器

时间:2017-03-16 13:27:00

标签: ruby-on-rails ruby-on-rails-5 cancan cancancan

我知道如何在Rails 5中使用CanCan限制RESTful应用程序的访问。

我的一些操作和控制器不是RESTful。

例如,我有一个带有user_report方法的report_controller。没有直接链接到此控制器/操作的模型。

class ReportController < ApplicationController

  load_and_authorize_resource

  def user_report

  end

end

如何在ability.rb文件中定义一项限制访问此操作的功能?

1 个答案:

答案 0 :(得分:0)

ability.rb中定义一个这样的自定义功能:

can :view_reports, MyClass

user_report操作中,手动授权该功能:

def user_report
  authorize! :view_reports, MyClass
  # ...
end

另外,从load_and_authorize_resource移除ReportController,因为您直接调用了authorize!