2012-06-29 38 views
12

我使用CanCan进行授权。我在/app/config/ability.rb中定义了模型动作用户规则,并且工作正常。我已将load_and_authorize_resource行添加到我的application_controller中,并且完成了所有操作。CanCan和无模型控制器

但是,我也有许多视图和控制器没有下面的模型。例如,试图加载统计页面给出

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有一些方法可以使用controller + action而不是model + action吗?

回答

22

在您的控制器中使用authorize_resource :class => false。惨惨会自动检查在控制器的名称能力(为标志,奇异,如:statisticStatisticsController

https://github.com/ryanb/cancan/wiki/Non-RESTful-Controllers

+0

如果您使用load_and_authorize_resource方法,则无需提及class => false.cancan将检查并将其作为默认值进行查找。 –

+2

@MadhanAyyasamy我不这么认为 – Nithin

+0

@MadhanAyyasamy load_and_authorize_resource如果你不告诉它没有该控制器的模型,就会中断... –