将用户从一个 Rails 应用迁移到另一个,都使用 Devise,同时维护密码

spi*_*109 5 ruby-on-rails devise ruby-on-rails-4

我已经完全重建了一个新的 Rails 应用程序,但我需要从旧应用程序复制用户。这两个应用程序都使用 Devise,但我不确定如何安全地复制加密密码并让它在新应用程序上运行。谢谢。

jea*_*ste 4

这是一个相对较旧的主题,但我最近在将用户从一个应用程序迁移到另一个应用程序时遇到了类似的问题,两者都使用 Devise 作为身份验证系统。

如上所述,一个有效的选项是从先前模型中提取与身份验证相关的字段(电子邮件和加密密码)并将其插入新模型中。您只需确保在填充新数据库时跳过设计验证步骤,否则它将要求您提供有效的密码。

因此这应该有效:

user = User.new(email: 'existing@email.com', encrypted_password: 'existing_password_hash')
user.save(validate: false)
Run Code Online (Sandbox Code Playgroud)

如果您有一个已知密码的测试用户,您可以使用以下命令测试结果:

user.valid_password?('my_known_password')
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助