2011-07-06 3 views
0

J'utilise Devise 1.0.11 avec Rails 2.3.8. J'ai une configuration où je veux connecter un utilisateur automatiquement par une action de contrôleur qui ressemble à ceciDevise with Rails 2.3.8 produit une erreur de désérialisation après un sign_in manuel d'un utilisateur

def select_private 
    reset_session 
    private_user = User.find_by_identifier "PRIVATE" 
    sign_in :user, private_user 
    redirect_to a_page_that_needs_authentication_of_a_user_url 
end 

le test pour cela ressemble à cela et fonctionne très bien

test "select the private customer" do 
    get '/' 
    assert_response :success 
    get_via_redirect '/select/private' 
    assert_response :success 
    assert_equal path, '/shirt' 
end 

Mais quand je suis en train cette sur mon serveur Mongrel local, je reçois une erreur methodNotFound

undefined method `find' for Symbol:Class 

après la redirection vers le page_that_needs_authentication_of_a_user avec la trace de pile suivante de la dernière quelques lignes intéressantes

gems/devise-1.0.11/lib/devise/rails/warden_compat.rb:23:in `deserialize' 
gems/[email protected]/gems/warden-1.0.3/lib/warden/session_serializer.rb:31:in `fetch' 
gems/warden-1.0.3/lib/warden/proxy.rb:182:in `user' 
gems/warden-1.0.3/lib/warden/proxy.rb:270:in `_perform_authentication' 
gems/warden-1.0.3/lib/warden/proxy.rb:113:in `authenticate!' 
gems/devise-1.0.11/lib/devise/controllers/helpers.rb:207:in `authenticate_user!' 

L'action qui est rendue appelle l'authenticate_user! en tant que before_filter, fonctionne très bien lorsqu'il est accessible via le nouveau formulaire de connexion de Session # normal.

Serait-ce un bug, ou avez-vous d'autres idées?

Répondre

0

Solution simple. Si vous avez le même problème, votre private_user est probablement nul.

private_user.nil? => true 

Mes données de test incluaient un utilisateur pour cet identificateur, la base de données de développement non. J'ai déjà proposé de soumettre un correctif avec un message d'erreur significatif car celui-ci est plutôt trompeur, à mon avis.

Questions connexes