Разработать сброс пароля с консоли Rails - PullRequest
82 голосов
/ 29 ноября 2011

Во время работы приложения, как выбрать пользователя по адресу электронной почты, а затем вручную установить пароль в пределах rails console для Devise?

Кроме того, куда мне обратиться, чтобы просмотреть документацию, чтобы узнать больше подробностей в этомпо поводу манипуляций с аккаунтами при использовании Devise?

Ответы [ 8 ]

123 голосов
/ 29 ноября 2011

Это более или менее, как вы описали: -)

# use mongoid
class User
  include Mongoid::Document
end


# then
user = User.where(email: 'joe@example.com').first

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

Обновление от 6 лет спустя:)

Современное устройство позволяет упростить синтаксис, нет необходимости устанавливать поле подтверждения

user.password = new_password; user.save
# or
user.update_attributes(password: new_password)
51 голосов
/ 23 января 2013
# $ rails console production
u=User.where(:email => 'usermail@gmail.com').first
u.password='userpassword'
u.password_confirmation='userpassword'
u.save!
22 голосов
/ 13 января 2015

Если вы запустили следующее в консоли rails, это должно помочь:

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

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

5 голосов
/ 06 февраля 2017

Вы можете просто обновить поле пароля, нет необходимости подтверждать пароль, devise сохранит его в зашифрованном виде

u = User.find_by_email('user@example.com')
u.update_attribute(:password, '123123')
3 голосов
/ 25 августа 2014

1.Войдите в консоль ralis

$ sudo bundle exec rails console production

2. Затем обновите пароль администратора

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. Обновите страницу входа, используйте новый пароль для входа, наслаждайтесь!

Удачи!

3 голосов
/ 31 июля 2012

По какой-то причине (Rails 2.3 ??)

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

у меня не сработало, но

user = User.find_by_email('user@example.com')

сделал.

1 голос
/ 21 июля 2017
User.find_by_email('joe@example.com').update_attributes(:password => 'password')
0 голосов
/ 06 августа 2015

Если ваша учетная запись заблокирована из-за слишком большого числа попыток входа в систему, вам также может потребоваться:

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