120

While running an app how do you select a user by email address and then set the password manually within rails console for Devise?

Also, where would I go to review documentation to cover more details in this regard to manipulation of accounts while using Devise?

1
  • Valk: where() isn't available until rails 3. But, the way you did it is fine too. Commented Aug 25, 2012 at 14:57

8 Answers 8

185

Modern devise allows simpler syntax, no need to set the confirmation field

user.password = new_password; user.save # or user.update(password: new_password) 
Sign up to request clarification or add additional context in comments.

9 Comments

Ah, hmm. That would work for a standard user, but in this case it's from the admin_users table. What's the appropriate tweak to pull from this table vs the users? Simply setting it to user = AdminUser... did not work.
Umm, I don't know, query AdminUser model? As for me, I always stored all users in the same tables, with 'roles' attribute assigned.
You can change name of collection that model refers to with :store_in method. So, to look in admin_users table you'd have to add User.store_in 'admin_users' before that code. (this answer implies using of Mongoid)
Attempted User.store_in 'admin_users' however received undefined method. I'm not seemingly able to access the table as I'm just getting a nil back each time. What about querying the entire table and just getting all entries therein initially to test to see if I'm getting into that table initially? (Working in MySQL here, however that shouldn't matter with ActiveRecord.)
Another few years later in 2020, Rails 6.0 issues a warning update_attributes is deprecated and will be removed from Rails 6.1. Use instead: user.update(password: new_password)
|
62
# $ rails console production u=User.where(:email => '[email protected]').first u.password='userpassword' u.password_confirmation='userpassword' u.save! 

1 Comment

devise is baked in rails so the use of pw confirmation is redundant. User.find_by_email('[email protected]').update_attributes(:password => 'password')
31

If you run the following in the rails console it should do the trick:

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

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

2 Comments

Note the exclamation mark is deprecated, it is just : User.find_by(email: 'user_email_address').reset_password('new_password','new_password')
Also note that you have to enter a valid password that confirms to the password requirements in your devise configuration.
7

You can simply update password field, no need for confirmation password, devise will save it in encrypted form

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

Comments

3

For some reason, (Rails 2.3??)

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

didn't work for me, but

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

did it.

1 Comment

The reason for this being that the where(); method was not yet in rails 2.3, we used to use the find(:all, :conditions => conditions) back in the days.
3

1.Login in to ralis console

$ sudo bundle exec rails console production 

2.Then update the administrator's password

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 the login page, use the new password to login, enjoy!

Good Luck!

1 Comment

devise is baked in so the use of pw confirmation is redundant. User.find_by_email('[email protected]').update_attributes(:password => 'password')
3
User.find_by_email('[email protected]').update_attributes(:password => 'password') 

Comments

1

If your account is locked from too many login attempts, you may also need to do:

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

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.