2012-06-29 9 views
12

Uso CanCan per l'autorizzazione. Definisco le regole utente del modello action in /app/config/ability.rb e funziona bene. Ho aggiunto la riga load_and_authorize_resource al mio application_controller e tutto è stato fatto.CanCan e controller senza modelli

Tuttavia, ho anche numerose viste e controller che non hanno un modello sotto. Ad esempio, cercando di caricare una pagina delle statistiche dà

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' 
    ... 

C'è qualche modo per CanCan di lavorare con il controller + azione al posto del modello + azione?

risposta

22

Utilizzare authorize_resource :class => false nel controller. CanCan controllerà automaticamente per le abilità sul nome del controller (come simbolo, singolare, ad esempio :statistic per la StatisticsController)

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

+0

Se si utilizza il metodo load_and_authorize_resource, non è necessario menzionare class => false.cancan lo verificherà e lo individuerà come predefinito. –

+2

@MadhanAyyasamy Non lo penso – Nithin

+0

@MadhanAyyasamy load_and_authorize_resource interrompe se non dici che non esiste un modello per quel controller ... –

0

è possibile utilizzare questo gioiello cancacan "https://github.com/piedoom/cancancan", dove le persone sta trovando aggiornamento la gemma può essere convertita nella nuova versione di

Problemi correlati