Я пытаюсь перенести тонну пользователей из старой базы данных. Для этого я использую activerecord-import и пытаюсь сохранить все свои пользовательские данные непосредственно в БД (в обход модели 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, потому что даже с установкой пароля и растяжений результирующий хэш каждый раз отличается.
Есть идеи? Спасибо за вашу помощь!