Je construis une petite application dans Rails et ce que j'essaie de faire maintenant est d'authentifier un utilisateur.Problème avec la recherche active d'enregistrements
J'ai eu cette méthode dans la classe du contrôleur:
def login
if @user = User.authenticate(params[:txt_login], params[:txt_password])
session[:current_user_id] = @user.id
redirect_to root_url
end
end
Voici la définition de méthode authenticate (dans la classe modèle utilisateur):
def self.authenticate(username, password)
@user = User.where(["username = ? AND password = ?", username, password])
return @user
end
Le problème est que je reçois un message d'erreur dire:
undefined method `id' for #<ActiveRecord::Relation:0x92dff10>
Je confirme que l'utilisateur que j'essayais de se connecter vraiment exis ts dans la base de données (en plus il essaie d'obtenir l'id d'un utilisateur et cette instruction est enveloppée dans un si 0 cas les utilisateurs sont renvoyés par la méthode d'authentification). Pourquoi est-ce que j'obtiens ce message d'erreur? Sachant que quand je change le User.where
par User.find
cela fonctionne très bien!
Merci!
Merci. Pour le problème de mot de passe, bien sûr que je suis juste en train de jouer pour apprendre Rails, ce n'est pas un code de production mais je vais probablement jeter un oeil à ces plugins. –