ruby-on-rails - 将旧数据库用户迁移到 Devise

标签 ruby-on-rails ruby ruby-on-rails-3 devise

我们在 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/

相关文章:

ruby-on-rails - 为什么 declarative_authorization 会破坏我的 Controller 的功能? - rails 3

html - 相对链接 (RoR)

javascript - Rails ajax spinner 适用于开发,但不适用于生产

javascript - 将 html 参数放入 Rails 数组参数中

ruby-on-rails - 如何在不首先在 Ruby 中实例化的情况下获取所有子类的列表

ruby - Heroku 错误 : "Could not find an executable ["phantomjs"] on your path.“

ruby-on-rails - rails : Make request to development environment while using tests

ruby-on-rails - Rails : rendering the js. erb 模板使用 Controller

ruby-on-rails-3 - 来自字段中带有表别名的 ActiveRecord 查询

jquery - 一点一点地加载页面