Rails 3.1. Создайте одного пользователя в консоли с защищенным паролем

#ruby-on-rails #ruby-on-rails-3

#ruby-on-rails #ruby-on-rails-3

Вопрос:

Я хочу создать одного пользователя (администратора) и хочу использовать консоль (без модели регистрации пользователя). Я использую решение от RailsCasts (http://railscasts.com/episodes/270-authentication-in-rails-3-1 ). Но у меня есть одна проблема: когда я делаю User.create(…, :password => «pass») в консоли, мой пароль сохраняется в базе данных без шифрования (например, «pass»). И я не могу войти в систему со своими данными.

Как я могу создать пользователя из консоли? 🙂

Ответ №1:

Прямо из Rails API

 # Schema: User(name:string, password_digest:string)
class User < ActiveRecord::Base
  has_secure_password
end

user = User.new(:name => "david", :password => "", :password_confirmation => "nomatch")
user.save                                                      # => false, password required
user.password = "mUc3m00RsqyRe"
user.save                                                      # => false, confirmation doesn't match
user.password_confirmation = "mUc3m00RsqyRe"
user.save                                                      # => true
user.authenticate("notright")                                  # => false
user.authenticate("mUc3m00RsqyRe")                             # => user
 

Вам нужно включить :password_confirmation => "pass в свой хэш!

Правильно, итак, взглянув на has_secure_password то, что вы хотите выполнить BCrypt::Password.create(unencrypted_password) , чтобы получить его. Для этого вам понадобится bcrypt-ruby gem.

Комментарии:

1. Спасибо! Я забыл о BCrypt, он тоже хорошо работает без подтверждения пароля 🙂