我知道如何在Rails 5中使用CanCan限制RESTful应用程序的访问。
我的一些操作和控制器不是RESTful。
例如,我有一个带有user_report方法的report_controller。没有直接链接到此控制器/操作的模型。
class ReportController < ApplicationController
load_and_authorize_resource
def user_report
end
end
如何在ability.rb文件中定义一项限制访问此操作的功能?
答案 0 :(得分:0)
在ability.rb
中定义一个这样的自定义功能:
can :view_reports, MyClass
在user_report
操作中,手动授权该功能:
def user_report
authorize! :view_reports, MyClass
# ...
end
另外,从load_and_authorize_resource
移除ReportController
,因为您直接调用了authorize!
。