Я пытаюсь перенести тонну пользователей из старой базы данных. Для этого я использую activerecord-import и пытаюсь сохранить все свои пользовательские данные непосредственно в DB (минуя модель User).
Моя проблема: мне нужно взять старый пользовательский текстовый пароль, зашифровать его и сохранить непосредственно в БД. Я знаю, как сгенерировать пароль с помощью Devise, но мне интересно, есть ли способ получить хешированный пароль, который я могу хранить непосредственно в базе данных.
В надежде сделать:
new_hashed_password = Devise.awesome_encrypting_method(old_user.password)
Затем сохраните "new_hashed_password" непосредственно в БД без прохождения модели. Я выкопался в Devise и нашел это:
def password_digest(password)
::BCrypt::Password.create("#{password}#{self.class.pepper}", :cost => self.class.stretches).to_s
end
@@растягивает по умолчанию 10 (lib/devise.rb: 71) и не переопределяется моим инициализатором
@@pepper по умолчанию nil (lib/devise.rb: 148) и не переопределяется моим инициализатором
Я думал, что могу вручную создать пароль password_digest(), но я думаю, что мне не хватает чего-то фундаментального в Bcrypt, потому что даже при установке пароля и растяжек результирующий хеш каждый раз отличается.
Любые идеи? Спасибо за вашу помощь!