#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, он тоже хорошо работает без подтверждения пароля 🙂