155 votes

Créer un utilisateur devise à partir de la console Ruby

Une idée sur la façon de créer et de sauvegarder un nouvel objet Utilisateur avec devise à partir de la console ruby ?

Lorsque j'ai essayé de le sauvegarder, j'ai obtenu un résultat toujours faux. Je suppose que quelque chose m'échappe, mais je ne trouve aucune information à ce sujet.

1 votes

Ce n'est pas une réponse à votre question, et vous connaissez probablement déjà Railcasts, mais j'ai trouvé ces vidéos utiles pour apprendre à connaître Devise : railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . Vous y trouverez également quelques autres vidéos très utiles sur Devise. Bonne chance.

2 votes

Oui, j'ai regardé les deux, mais ils ne disent rien sur ce que je demande.

206voto

jspooner Points 3963

Vous pouvez ajouter false à la méthode de sauvegarde pour ignorer les validations si vous le souhaitez.

User.new({:email => "guy@gmail.com", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" }).save(false)

Sinon, je ferais ceci

User.create!({:email => "guy@gmail.com", :roles => ["admin"], :password => "111111", :password_confirmation => "111111" })

Si vous avez confirmable activé pour devise, assurez-vous que vous configurez le module confirmed_at en quelque chose comme Time.now tout en créant.

51 votes

On dirait que save(false) est déprogrammé, maintenant devrait être save(:validate => false)

9 votes

il y a tellement de magie qui se passe ici Le modèle User étend Active Record. Comment se fait-il que la méthode create soit surchargée ? Où le mot de passe est-il crypté ?

2 votes

Que fait réellement le devise call

80voto

Sam Ritchie Points 7787

Vous devriez pouvoir le faire en utilisant

u = User.new(:email => "user@name.com", :password => 'password', :password_confirmation => 'password')
u.save

si cela retourne false, vous pouvez appeler

u.errors

pour voir ce qui a mal tourné.

17 votes

Si vous utilisez :confirmable, n'oubliez pas de définir également l'attribut :confirmed_at sur Time.now pour pouvoir vous connecter immédiatement.

9 votes

En guise de raccourci, si vous utilisez l'option Confirmable appel u.confirm!

30voto

Lorsque votre modèle a l'option :confirmable, cela signifie que l'utilisateur de l'objet doit être confirmé en premier. Vous pouvez faire deux façons de sauvegarder l'utilisateur.

a. Le premier est la confirmation du saut :

newuser = User.new({email: 'superadmin1@testing.com', password: 'password', password_confirmation: 'password'})
newuser.skip_confirmation!
newuser.save

b. ou utilisez la fonction "confirmer" ! :

newuser = User.new({email: 'superadmin2@testing.com', password: 'password', password_confirmation: 'password'})
newuser.confirm!
newuser.save

7voto

fwuensche Points 923

Si vous voulez éviter d'envoyer des courriels de confirmation le meilleur choix est :

    u = User.new({
      email: 'demo@greenant.com.br',
      password: '12feijaocomarroz',
      password_confirmation: '12feijaocomarroz'
    })

    u.confirm
    u.save

Ainsi, si vous utilisez une fausse adresse électronique ou si vous n'avez pas de connexion Internet, cela évitera les erreurs.

0 votes

Mise à jour : confirm! est maintenant juste confirm

3voto

Ezequiel Ramiro Points 352

Aucune des réponses ci-dessus n'a fonctionné pour moi.

C'est ce que j'ai fait :

User.create(email: "a@a.com", password: "asdasd", password_confirmation: "asdasd")

N'oubliez pas que le mot de passe doit comporter plus de 6 caractères.

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