У меня есть пользовательская таблица в моей базе данных, и я хочу, чтобы для каждого пользователя был создан случайный пароль, который затем отправлялся на его адрес электронной почты.Мне было интересно, как бы я назначил случайный пароль.
На мой взгляд, в моем контроле:В моей модели пользователя есть следующее:
attr_accessor :password
before_save :encrypt_password
def encrypt_password
if password.present?
self.password_salt = BCrypt::Engine.generate_salt
self.password_hash = BCrypt::Engine.hash_secret(password, password_salt)
end
end
def self.random_string(len)
#generate a random password consisting of strings and digits
chars = ("a".."z").to_a + ("A".."Z").to_a + ("0".."9").to_a password = ""
1.upto(len) { |i| password << chars[rand(chars.size-1)]}
return password
end
def self.authenticate(email, password)
user = find_by_email(email)
if user && user.password_hash == BCrypt::Engine.hash_secret(password, user.password_salt)
user
else
nil
end
end
Мне придется удалить свой if password.present?строка, потому что она не будет присутствовать, но у меня есть случайный строковый код, мне просто нужно присвоить его хешу / соли.