web-dev-qa-db-fra.com

Définir un mot de passe réinitialisé à partir de Rails console

Lors de l'exécution d'une application, comment sélectionner un utilisateur par adresse électronique, puis définir le mot de passe manuellement dans Rails console pour Devise?

En outre, où irais-je pour examiner la documentation afin de fournir plus de détails à ce sujet en ce qui concerne la manipulation des comptes lors de l’utilisation de Devise?

82
ylluminate

C'est plus ou moins ce que vous avez décrit :-)

# use mongoid
class User
  include Mongoid::Document
end


# then
user = User.where(email: '[email protected]').first

if user
  user.password = new_password
  user.password_confirmation = new_password
  user.save
end

Mise à jour à partir de 6 ans plus tard :)

Un système moderne permet une syntaxe plus simple, pas besoin de définir le champ de confirmation

user.password = new_password; user.save
# or
user.update_attributes(password: new_password)
124
Sergio Tulentsev
# $ Rails console production
u=User.where(:email => '[email protected]').first
u.password='userpassword'
u.password_confirmation='userpassword'
u.save!
51
Eric Guo

Si vous exécutez ce qui suit dans la console Rails), cela devrait faire l'affaire:

User.find_by(email: 'user_email_address').reset_password!('new_password','new_password')

http://www.rubydoc.info/github/plataformatec/devise/Devise/Models/Recoverable

22
gstraehle

Vous pouvez simplement mettre à jour le champ de mot de passe, aucun mot de passe de confirmation n'est nécessaire, le système l'enregistrera sous forme cryptée.

u = User.find_by_email('[email protected]')
u.update_attribute(:password, '123123')
5
Kshitij

Pour une raison quelconque, (Rails 2.3 ??)

user = User.where(:email => email).first

n'a pas fonctionné pour moi, mais

user = User.find_by_email('[email protected]')

l'a fait.

3
valk

1.Connectez-vous à la console Ralis

$ Sudo bundle exec Rails console production

2.Alors mettre à jour le mot de passe de l'administrateur

irb(main):001:0> user = User.where("username = 'root'")
irb(main):002:0> u = user.first
irb(main):003:0> u.password="root2014@Robin"
=> "root2014@Robin"
irb(main):004:0> u.password_confirmation="root2014@Robin"
=> "root2014@Robin"
irb(main):005:0> u.save
=> true
irb(main):006:0> exit

3.Refresh de la page de connexion, utilisez le nouveau mot de passe pour vous connecter, profitez-en!

Bonne chance!

3
robinwen
User.find_by_email('[email protected]').update_attributes(:password => 'password')
1
copremesis

Si votre compte est bloqué par trop de tentatives de connexion, vous devrez peut-être aussi:

user.locked_at = ''
user.failed_attempts = '0'
user.save!
0
Enzio