2012-09-05 21 views
6

aiuto la mia in questa domanda:Devise authenticate_user

Ho 2 modelli (admin e l'utente) -> creato con disposizione testamentaria, e ho post_controller:

e la domanda sorge spontanea:

se Ho un modello (user.rb) -> in mio controller ho messo:

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

ma ho 2 modelli e voglio utente avere accesso alle 'show' e 'indice' azione o f post controller e Admin hanno accesso a tutte le azioni.

e faccio una cosa del genere:

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

      else 
      authenticate_user! 
      end 
     end 

ma voglio cambiare la mia stringa:

authenticate_user!

a qualcosa di simile:

:authenticate_user!, :except => [:show, :index]
ma tranne che si riferisce a before_filter

come posso fare (senza gemma 'cancan')

risposta

13

Provare a utilizzare due filtri precedenti: uno per le azioni solo admin e un altro per le azioni amministratore o utente.

# 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 
Problemi correlati