CanCan和控制器没有型号

时间:2012-06-29 06:19:18

标签: ruby-on-rails cancan

我正在使用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是否有办法使用控制器+动作而不是模型+动作?

3 个答案:

答案 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文件中指定控制器:

ability.rb:

can :read, StatisticsController # ability.rb

StatisticsController:

class StatisticsController < ApplicationController

  def read
    authorize! :read, current_user 
  end
end