我正在使用CanCan进行授权。我在/app/config/ability.rb中定义了模型 - 操作 - 用户规则,它运行正常。我已将行load_and_authorize_resource
添加到我的application_controller中,一切都已完成。
但是,我还有许多视图和控制器,下面没有模型。例如,尝试加载统计信息页面会显示
NameError (uninitialized constant Statistic):
activesupport (3.2.3) lib/active_support/inflector/methods.rb:229:in `block in constantize'
activesupport (3.2.3) lib/active_support/inflector/methods.rb:228:in `each'
activesupport (3.2.3) lib/active_support/inflector/methods.rb:228:in `constantize'
...
CanCan是否有办法使用控制器+动作而不是模型+动作?
答案 0 :(得分:22)
在控制器中使用authorize_resource :class => false
。 CanCan将自动检查控制器名称的能力(作为符号,单数,例如:statistic
的{{1}}
请参阅https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers
答案 1 :(得分:0)
你可以使用这个宝石cancacan“https://github.com/piedoom/cancancan”,其中人们发现更新宝石cancan到rails new版本
答案 2 :(得分:0)
您可以在ability.rb
文件中指定控制器:
can :read, StatisticsController # ability.rb
class StatisticsController < ApplicationController
def read
authorize! :read, current_user
end
end