2012-09-05 10 views
6

pomoc mój w tym pytaniu:Devise authenticate_user

mam 2 modele (admin i użytkownika) -> utworzonego z opracowania, i mam post_controller:

i powstaje pytanie:

jeśli mam jeden model (user.rb) -> w moim kontrolera kładę, że:

before_filter :authenticate_user!, :except => [:show, :index] 

ale mam 2 modele i chcę, aby użytkownik miał dostęp do 'koncert' i 'index' O akcji f kontroler postu i administrator mają dostęp do wszystkich akcji.

i zrobić coś takiego:

before_filter :logged_in 
. 
. 
. 
    private 
     def logged_in 
      if admin_signed_in? 

      else 
      authenticate_user! 
      end 
     end 

ale chcę zmienić moje ciąg:

authenticate_user!

do czegoś takiego:

:authenticate_user!, :except => [:show, :index]
ale chyba odnosi się do before_filter

jak to zrobić (bez klejnotu cancan)

Odpowiedz

13

Spróbuj użyć dwóch filtrów przed sobą - jeden dla działań administracyjnych, a drugi dla działań administratora lub użytkownika.

# ensure admin for other actions 
before_filter :check_admin_logged_in!, :except => [:show, :index] 

# ensure user or admin logged in for these actions (:only option is optional) 
before_filter :check_user_logged_in!, :only => [:show, :index] 

private 
    def check_admin_logged_in! # admin must be logged in 
     authenticate_admin! 
    end 
    def check_user_logged_in! # if admin is not logged in, user must be logged in 
     if !admin_signed_in? 
     authenticate_user! 
     end 
    end 
Powiązane problemy