34 votes

Rails 3 à Concevoir pour l'Authentification - Comment puis-je créer manuellement un utilisateur?

Je voudrais créer manuellement de nouveaux Users, sans forcer, afin de vérifier leur adresse de courriel.

L'idée est de permettre aux utilisateurs d'ajouter automatiquement leurs amis, sans exiger de leur inscription. Il fait sens pour l'entreprise les cas, je suis en train de travailler à résoudre.

Comment cela peut-il être réalisé avec les Concevoir?

50voto

Matheus Moreira Points 7839

L' skip_confirmation! méthode est disponible pour tout confirmable modèle.

@user = User.new params[:user]
@user.skip_confirmation! # Sets confirmed_at to Time.now, activating the account
@user.save

Le compte d'utilisateur est activé. Si vous ne voulez pas, continuez la lecture.

Concevoir utilise le conditionnel rappels pour générer la confirmation de jeton et envoyez l'e-mail. Les rappels seront seulement être appelée si confirmation_required? retours true. Redéfinir votre modèle:

def confirmation_required?
  false
end

Cependant, cela va rendre l' active_for_authentication? méthode retourne toujours vrai, car il faut savoir si ou non la confirmation est nécessaire en compte. Nous devons redéfinir ainsi:

def active_for_authentication?
  confirmed? || confirmation_period_valid?
end

De cette façon, le compte reste inactif et aucun mail de confirmation vous sera envoyé. Vous devez l'activer manuellement l'utilisateur en appelant confirm! le dossier ou tout simplement la mise en confirmed_at à n'importe quelle date.

Il est tout à fait un hack, mais il devrait fonctionner.

Pour référence: confirmable.rb

9voto

UnSandpiper Points 101

Je veux juste ajouter que pour référence future que depuis Élaborer 2.2 il y a maintenant un skip_confirmation_notification! méthode disponible aussi bien ce qui fait tout de Matheus " post sans redéfinir les méthodes dans le modèle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X