2013-02-12 7 views
6

Ho due modelli User e ActiveAdmin su cui voglio applicare le mie integrazioni devise.Come definire un errore personalizzato da escogitare in caso di due diversi modelli Utente e amministratore attivo?

ho il mio custom_failure.rb come segue

class CustomFailure < Devise::FailureApp 

    def redirect_url 
    login_path 
    end 

    # def redirect_url 
    # root_path 
    # end 

    def respond 
    if http_auth? 
     http_auth 
    else 
     redirect 
    end 
    end 
end 

che sembra funzionare grande.

Inoltre, può definire nel mio application controller come:

def after_sign_in_path_for(resource) 
    # case resource 
    if resource.is_a?(Admin) 
     admin_dashboard_path 
    else 
     root_path 
    end 
end 

e

def after_sign_out_path_for(resource_or_scope) 
    login_path 
end 

Ma il problema è come utilizzare questo resource in custom_failure.rb in modo che possa reindirizzare di conseguenza per il login per user login o per il admin login ?? Acc a scenario attuale si reindirizza sempre alla pagina di accesso utente ??

risposta

11

Prova a inserire custom_failure.rb nella cartella lib. Quindi assicurati che il file sia caricato. Probabilmente tenteresti di caricare automaticamente tutti i file in lib.

Quindi Redirect to a specific page.

UPDATE:

Devi usare ambito per risolvere questo: -

class CustomFailure < Devise::FailureApp 
    def redirect_url 
    if warden_options[:scope] == :user 
     signin_path 
    else 
     new_admin_user_session_path 
    end 
    end 
    def respond 
    if http_auth? 
     http_auth 
    else 
     redirect 
    end 
    end 
end 
+0

ho già fatto. La mia preoccupazione era come identificare questo errore personalizzato era per un 'utente' o un' ActiveAdmin' –

+0

@SahilGrover controlla il mio aggiornamento per favore. –