我们在 MySQL 中有一个旧的 PHP 应用程序,目前正在 Rails 和 PostgreSQL 中重写。 我正在寻找一种在用户首次登录新系统时逐一迁移用户的方法,以便我们仅迁移活跃用户。
Devise 中是否有一个钩子(Hook),我可以用它来捕获新数据库的失败登录,并检查用户是否存在于旧的 MySQL 数据库中,如果找到则迁移用户。
顺便说一句,Rails 应用程序可以访问这两个数据库,并且迁移代码已经就位,可以接受旧的用户名
作为输入。
或者我应该简单地创建一个单独的_migration_assistant_页面来接受旧登录并启动迁移?
PS。任何用户都可能有数千条数据库记录需要迁移,因此可能需要一些时间,但我们已经利用 PosgreSQL 的 COPY FROM 来加快速度(每个帐户大约几秒)。编辑: 目前大约有 5000 用户,我们预计其中大约 1000 用户将返回新网站。
最佳答案
您可以仅从用户表中迁移所需的数据。将原始主键包含在“old_id”列中。
创建 custom encryptor以便用户可以使用现有密码登录。
Redirect用户登录页面时,会使用保存的“old_id”触发每个用户的迁移过程。
迁移期结束后,您可以查看 Devise trackable列来确定哪些用户可以被清理。
关于ruby-on-rails - 将旧数据库用户迁移到 Devise,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13147616/