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


146

Une idée sur la façon de créer et d'enregistrer un nouvel objet User avec un appareil depuis la console ruby?

Quand j'ai essayé de le sauvegarder, je deviens toujours faux. Je suppose qu'il me manque quelque chose mais je ne parviens pas à trouver d'informations connexes.


1
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 en apprendre davantage sur Devise: railscasts.com/episodes/209-introducing-devise , railscasts.com/episodes/210-customizing-devise . Ils ont également quelques vidéos plus utiles sur Devise. Bonne chance.

2
Oui, je les ai regardés tous les deux, mais ils ne disent rien de ce que je demande.
Martin

Réponses:


197

Vous pouvez ajouter false à la méthode save 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 ça

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

Si vous avez confirmableactivé le module pour la conception, assurez-vous de définir la confirmed_atvaleur sur quelque chose comme Time.nowlors de la création.


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

9
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 remplacée. Où le mot de passe est-il chiffré?
codeAnand

2
Que fait réellement l'appel de
devise

Cela semble être une mauvaise façon de faire. Cette façon de forcer la validation (ou de sauter la validation) ne définira pas le encrypted_password, rendant ainsi cet enregistrement inutile dans l'application réelle.
VPaul

79

Vous devriez pouvoir le faire en utilisant

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

si cela renvoie false, vous pouvez appeler

u.errors

pour voir ce qui ne va pas.


17
Si vous utilisez: confirmable, n'oubliez pas de définir également l'attribut: confirm_at sur Time.now afin de pouvoir vous connecter immédiatement.
David Sulc

9
Comme raccourci, si vous utilisez Confirmable, appelezu.confirm!
captainpete

30

Lorsque votre modèle a: option confirmable, cela signifie que l'utilisateur de l'objet doit d'abord être confirmé. Vous pouvez faire deux manières d'enregistrer l'utilisateur.

une. le premier est ignorer la confirmation:

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

b. ou utilisez confirmer! :

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

6

Si vous souhaitez éviter d'envoyer des e - mails de confirmation , le meilleur choix est:

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

    u.confirm
    u.save

Donc, si vous utilisez un faux e-mail ou n'avez pas de connexion Internet, cela évitera les erreurs.


Mise à jour: confirm!est maintenant justeconfirm
Shadow Radiance

2

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")

Gardez à l'esprit que le mot de passe doit comporter plus de 6 caractères.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.