2013-07-05 3 views
4

Je suis en train de créer une application avec deux modèles assez distincts, utilisant à la fois le principe d'authentification. Une fois que vous vous connectez en tant que maison, chaque individu de la maison peut se connecter en tant que résident de cette maison. Tout fonctionne bien, sauf que lorsque je quitte une session de résident en utilisantCréer des sessions pour plusieurs utilisateurs

destroy_resident_session 

le seul problème est qu'il tue aussi la session de la maison car il appelle

Devise::SessionsController#destroy 

J'ai essayé de créer une session personnalisée pour les résidents, voici mon code ci-dessous:

class SessionsController < Devise::SessionsController 

    # DELETE /resource/sign_out 
    def destroy 
    redirect_path = after_sign_out_path_for(resource_name) 
    signed_out = sign_out(resident) 
    set_flash_message :notice, :signed_out if signed_out && is_navigational_format? 

    # We actually need to hardcode this as Rails default responder doesn't 
    # support returning empty response on GET request 
    respond_to do |format| 
     format.all { head :no_content } 
     format.any(*navigational_formats) { redirect_to redirect_path } 
    end 
    end 
end 

Cela donne une erreur:

undefined local variable or method `resident' 

je être mal compris la logique de la méthode, mais il semble que je veux changer la ligne suivante dans le legs contrôleur de sessions:

signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)) 

Depuis que je ne veux pas vous déconnecter de tous les champs d'application, seule la portée du résident.

Résolu

Tout ce que je devais faire a été mis

config.sign_out_all_scopes = false 

dans

config/devise.rb 

Et aussi, devait se rappeler redémarrer mon serveur :)

+1

You rock! Était aux prises avec le même problème. Cette option devrait vraiment être mentionnée dans la section "Configuration de plusieurs modèles" du fichier README. :) BTW-Vous devez formellement répondre à cette question, puis acceptez votre propre réponse. – odigity

+0

Je le seconde: vous devez ajouter votre solution comme réponse à cette question, puis accepter cette réponse comme la bonne. – Ernesto

Répondre

2

Cette devrait être marqué comme la réponse. Vous ne l'avez pas poster mais j'eu le même problème et que la solution était donc je suis annonce pour la communauté

config/devise.rb

config.sign_out_all_scopes = false 
Questions connexes