Rails 3 Avec Devise pour L'authentification-comment créer manuellement un utilisateur?
Je voudrais créer manuellement de nouveaux User
s, sans les forcer à vérifier leur adresse e-mail.
L'idée est de permettre aux utilisateurs existants d'ajouter automatiquement leurs amis sans nécessiter leur inscription. C'est logique pour l'analyse de rentabilisation que je travaille à résoudre.
Comment cela peut-il être réalisé avec Devise?
2 réponses
La Méthode skip_confirmation!
est disponible pour tout modèle confirmable
.
@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save
Le compte utilisateur sera activé. Si vous ne voulez pas que, continuer la lecture.
Devise utilise des rappels conditionnels pour générer le jeton de confirmation et envoyer l'e-mail. Les rappels ne seront appelés que si confirmation_required?
renvoie true
. Redéfinir votre modèle:
def confirmation_required?
false
end
Cependant, cela fera que la méthode active_for_authentication?
retournera toujours true car elle prend si oui ou non la confirmation est requise dans compte. Nous devons redéfinir cela aussi:
def active_for_authentication?
confirmed? || confirmation_period_valid?
end
De cette façon, le compte restera inactif et aucun e-mail de confirmation ne sera envoyé. Vous devrez activer manuellement l'utilisateur en appelant confirm!
sur l'enregistrement ou simplement en définissant confirmed_at
à n'importe quelle date.
C'est un sacré hack, mais ça devrait marcher.
Pour référence: confirmable.rb
Je veux juste ajouter pour référence future que depuis Devise 2.2 il y a maintenant une méthode skip_confirmation_notification!
Disponible également qui fait essentiellement tout à partir du post de Matheus sans redéfinir les méthodes dans le modèle.