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?

34
demandé sur James 2011-01-05 01:43:42

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

50
répondu Matheus Moreira 2012-03-29 18:28:20

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.

9
répondu UnSandpiper 2013-11-17 09:02:32