2010-10-22 4 views
0

J'ai une simple classe utilisateur avec la validation suivante de l'unicité du nom:Rails: en utilisant la validation pour le registre utilisateur/login

class User < ActiveRecord::Base 

    validates :name, :uniqueness => true, 

Il fonctionne très bien lors de la création d'un nouvel utilisateur. Cependant, quand je vérifie le formulaire de connexion, l'utilisateur entre son nom, et le système dit qu'il est déjà pris, ce qui n'a aucun sens.

Je mis en œuvre une méthode valid_login? séparée, mais je ne peux pas tourner le chèque unqueness là:

def valid_login? 
    validates :name, :uniqueness => false # doesn't work 
end 

Ceci est le code de mon contrôleur:

def login 
    return unless request.post? 

    @user = User.new(params[:user]) 
    if @user.valid_login? 
     # Redirect to user's page 
    end 
end 

J'utilise ma propre authentification système qui est assez simple: je stocke le hash de l'ID utilisateur + mot de passe dans les cookies.

Comment puis-je désactiver certaines validations lorsque je n'en ai pas besoin?

+5

Ce n'est pas le comportement attendu. À quoi ressemble votre contrôleur de connexion? –

+1

Utilisez-vous également un gem pour gérer les connexions/sessions? authentification reposante, concevoir, authlogic, ou avez-vous roulé à la main votre propre système de connexion? –

+0

Jordan & Brett, j'ai mis à jour la question. – Alex

Répondre

0

J'ai résolu ce problème avec: if /: sauf les paramètres.

Questions connexes