2012-06-29 13 views
12

Używam CanCan do autoryzacji. Definiuję zasady model-akcja-użytkownik w /app/config/ability.rb i działa dobrze. Dodałem linię load_and_authorize_resource do mojego kontrolera application_controller i wszystko jest gotowe.CanCan i kontrolery bez modeli

Jednak mam również wiele widoków i kontrolerów, które nie mają pod spodem modelu. Na przykład, starając się, aby załadować stronę statystyki daje

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

Czy jest jakiś sposób na CanCan do pracy z kontrolerem + działania zamiast modelu + działania?

Odpowiedz

22

Użyj authorize_resource :class => false w kontrolerze. CanCan automatycznie sprawdzi umiejętności na nazwę kontrolera (jako symbol, jednostkowe, np :statistic dla StatisticsController)

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

+0

Jeśli używasz metody load_and_authorize_resource, nie trzeba wspominać class => false.cancan sprawdzi i zobaczy domyślnie. –

+2

@MadhanAyyasamy Nie sądzę, że – Nithin

+0

@MadhanAyyasamy load_and_authorize_resource zepsuje się, jeśli nie powiesz, że nie ma modelu dla tego kontrolera ... –

Powiązane problemy