2010-10-05 7 views
1

J'ai mon propre mot de passe/règles de connexion que je veux mettre en œuvre tels que:Comment remplacer les validations par défaut fournies avec Authlogic?

  • Mot de passe: au moins un numéro, un caractère minuscule et un caractère de majuscules
  • Login: Alphanumeric et entre 4 et 15 caractères

etc ...

Actuellement quand je n'entre pas un mot de passe et login dans ma forme, je reçois les erreurs suivantes (à partir des validations par défaut de Authlogic):

  • Connexion est trop court (minimum 3 caractères)
  • mot de passe est trop court (minimum est de 4 caractères)
  • Confirmation mot de passe est trop court (minimum est de 4 caractères)

Ces Les règles de validation ne sont pas dans mon modèle, elles proviennent de la gemme Authlogic. Je sais qu'il ya des configurations que je peux ajouter à l'aide:

acts_as_authentic do |config| 
    config.validate_password_field = false 
end 

Le problème est que je ne peux pas trouver une bonne documentation pour ces configurations et quand j'essaie celui ci-dessus je ne peux utiliser mon propre, il se plaint: undefined method 'password_confirmation' for #<User:0x7f5fac8fe7c0>

Faire ceci:

acts_as_authentic do |config| 
    config.validate_password_field = false 

    # added this so it might stop complaining 
    config.require_password_confirmation = true 
end 

ne fait rien.

Existe-t-il un moyen pour Authlogic d'exiger une confirmation du mot de passe tout en ignorant toutes les autres validations pour pouvoir le contrôler?

Répondre

2

Le undefined method 'password_confirmation' peut être évité simplement en ajoutant cette ligne dans votre modèle:

attr_accessor :password_confirmation 

Si vous voulez gérer la confirmation vous, ajoutez simplement:

validates_confirmation_of :password 

Si vous plongez dans la code, vous le trouverez dans password.rb:

if require_password_confirmation 
    validates_confirmation_of :password, validates_confirmation_of_password_field_options 
    validates_length_of :password_confirmation, validates_length_of_password_confirmation_field_options 
end 
+1

Cela l'a fait, merci! Aussi, pour le bénéfice de quelqu'un d'autre, ajouter: 'validate_login_field false' à la configuration d'authlogic empêchera également la validation de l'identifiant de connexion. – DJTripleThreat

Questions connexes