2

MySQLには古いPHPアプリがあり、現在RailsとPostgreSQLで書き直しています。新しいシステムに最初にサインインしたときにユーザーを1人ずつ移行して、アクティブなユーザーのみを移行する方法を探しています。

新しいデータベースへのログインの失敗をキャッチし、ユーザーが古いMySQLデータベースに存在するかどうかを確認し、見つかった場合はユーザーを移行するために使用できるフックがDeviseにありますか。

usernameところで、Railsアプリは両方のデータベースにアクセスでき、古いものを入力として受け入れる移行コードがすでに配置されています。

または、古いログインを受け入れて移行を開始する別の_migration_assistant_ページを作成するだけでよいですか?

PS。どのユーザーも移行するデータベースレコードが数千に及ぶ可能性があるため、少し時間がかかる可能性がありますが、すでにPosgreSQLを使用COPY FROMして高速化しています(アカウントあたり約数秒)。

編集: 現在約5000人のユーザーがいて、そのうち約1000人が新しいサイトに戻ると予想しています。

4

1 に答える 1

3

ユーザーテーブルだけから必要なデータを移行できます。列'old_id'に元の主キーを含めます。

ユーザーが既存のパスワードでログインできるように、カスタム暗号化機能を作成します。

保存された「old_id」を使用してユーザーごとに移行プロセスをトリガーするページにログインしたときに、ユーザーをリダイレクトします。

移行期間の後、Deviseの追跡可能な列を調べて、クリーンアップできるユーザーを判別できます。

于 2012-10-31T03:56:49.600 に答える