2012-06-29 63 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如果你不告訴它沒有該控制器的模型,就會中斷... –