Mon site est connecté au forum vbulletin externe. J'ai validateur utilisateur personnalisé pour vérifier si le nom d'utilisateur, e-mail est présent sur le forum vbulletin.Exécution de la validation mot de passe/mot de passe confirmation lorsque l'utilisateur réinitialise le mot de passe
validate :check_if_forum_user_exists
def check_if_forum_user_exists
if Vbuser.find_by_email(email.downcase)
errors.add(:email, "error 1")
end
if !Vbuser.find(:all, conditions: ["lower(username) = lower(?)",name]).empty?
errors.add(:name, "error 2")
end
end
J'ai une fonctionnalité de réinitialisation de mot de passe très basique. À la fin, l'utilisateur entre le mot de passe et la confirmation de mot de passe qui est stockée dans params[:user]
. Dans le contrôleur, je veux l'enregistrer avec @user.update_attributes(params[:user])
et obtenir la validation 'erreur 1' (comme tous les utilisateurs existants ont des comptes vbulletin, il se déclenchera toujours).
Je voudrais exécuter uniquement les validateurs has_secure_password, et pas d'autres, car je ne change rien d'autre que le mot de passe. Une idée comment puis-je faire cela? Et pourquoi ce validateur personnalisé se déclenche.