我已经完全重建了一个新的Rails应用程序,但我需要从旧应用程序复制用户。这两个应用程序都使用Devise,但我不确定如何安全地复制加密密码并使其适用于新应用程序。感谢。
答案 0 :(得分:3)
这是一个相对较老的主题,但我最近在将用户从应用程序迁移到另一个应用程序时遇到了类似问题,两者都使用Devise作为auth系统。
如上所述,有效选项是从先前模型中提取与auth相关的字段(email和encrypted_password)并将其插入新模型中。您只需确保在填充新数据库时跳过设计验证步骤,否则将要求您提供有效密码。
因此,这应该有效:
user = User.new(email: 'existing@email.com', encrypted_password: 'existing_password_hash')
user.save(validate: false)
如果您的测试用户拥有已知密码,您可以使用以下方法测试结果:
user.valid_password?('my_known_password')
希望这有帮助