Skip to content

マイグレーションファイルをスキーマファイルと整合するように修復#9485

Merged
komagata merged 3 commits intomainfrom
chore/restore-migration-files
Jan 23, 2026
Merged

マイグレーションファイルをスキーマファイルと整合するように修復#9485
komagata merged 3 commits intomainfrom
chore/restore-migration-files

Conversation

@ryufuta
Copy link
Copy Markdown
Contributor

@ryufuta ryufuta commented Jan 7, 2026

Issue

概要

本番環境に適用後に不適切に修正されたマイグレーションファイルを修復してスキーマファイル(および本番環境のDBスキーマ)との不整合を解消した。
詳細はIssueを参照。

変更確認方法

UI、振る舞い、ロジックの変更はない。

修復したマイグレーションファイルのファイル名が変更されていないこと(削除したのを復元したファイルについては削除前とファイル名が同じであること)を確認する。
(ファイル名のプレフィックスが変更されていると本番環境へのデプロイ時にマイグレーションファイルが誤って再適用されるため変更されていないことが重要)

本PRで言及している3つのsub-issueに記載しているスキーマファイル-マイグレーションファイル間の不整合が解消されていることを以下の手順で確認する。

  1. chore/restore-migration-filesをローカルに取り込む
  2. マイグレーションを最初からやり直す
bin/rails db:migrate:reset
  1. db/schema.rbに3つのsub-issueに記載している変更が生じていないことを確認する
    • その他の不整合は解消していないため変更自体は多数生じる
    • 以下のコマンドを実行してターミナルに何も表示されないことを確認すると楽
git diff | grep -E 't.index \["source_id"\]|add_foreign_key "practices"|t.string "tag_list"|\+    t.bigint "user_id", null: false|t.bigint "practice_id"|t.index \["practice_id"\]|add_foreign_key "movies", "practices"|t.index \["user_id", "reactionable_id", "reactionable_type", "kind"\]'

※確認後は以下の手順でローカルのDBをあるべき状態に戻す。

  1. git restore .で変更を戻す
  2. bin/rails db:resetを実行する

注意

この開発ブランチでアプリを起動する場合はbin/rails db:resetをこのブランチで先に実行する必要がある。
以下理由。
おそらくローカルのDBに復元した2つのマイグレーションファイル(20250618142946_add_index_on_source_id_to_practices.rb20250618144325_add_foreign_key_to_practices_source_id.rb)の適用履歴がない(bin/rails db:migrate:statusを実行すると2つのファイルがdownになっている)。
そのためbin/rails db:migrateを実行しないとローカルでアプリを起動できない。
しかし、マイグレーションの内容はDBに既に反映されている(ローカルではスキーマファイルを元にDBを作成するがスキーマファイルにその内容が反映済み)ためマイグレーションに失敗する。
bin/rails db:resetを実行してスキーマファイルを元にDBを作成し直す(同時にマイグレーションファイルをすべて適用済みにする)ことでアプリを起動できるようになる。

本番環境ではマイグレーションファイル削除後も適用履歴が残っているので同じマイグレーションが再適用されることはなく問題ない。

Summary by CodeRabbit

リリースノート

  • Chores
    • データベースパフォーマンス向上のため複数のインデックスを追加。クエリ応答速度が改善されました
    • ムービー機能のデータモデルを更新。ユーザー関連付けをオプション化し、スキーマを最適化しました

✏️ Tip: You can customize this high-level summary in your review settings.

本番環境に適用された a8180db のコミット時点の状態に戻した
本番環境に適用後に 0d29c9b のコミットで不適切に修正されたファイルを修正前の状態に復元した
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jan 7, 2026

📝 Walkthrough

Walkthrough

データベーススキーマの管理マイグレーションを更新および追加しています。反応テーブルのインデックス定義を簡潔な形式に変更し、映画テーブルから tag_list と practice 参照を削除してユーザー関連を nullable に変更し、プラクティステーブルに source_id インデックスと自己参照外部キー制約を新規追加しています。

Changes

Cohort / File(s) 概要
インデックス定義の簡潔化
db/migrate/20201203035119_add_index_to_reactions.rb
add_index を配列リテラル形式に変更。インデックス名を index_reactions_on_reactionable_u_k から index_reactions_on_reactionable に短縮。unique フラグと4つのカラム (user_id, reactionable_id, reactionable_type, kind) は維持。
映画テーブルスキーマの変更
db/migrate/20240321092012_create_movies.rb
tag_list カラムを削除。user 関連を非 nullable から nullable (null: true) に変更。practice 参照を完全に削除。
プラクティステーブルへのインデックス追加
db/migrate/20250618142946_add_index_on_source_id_to_practices.rb
source_id カラムに対する新規インデックスを追加するマイグレーションを新規作成。
プラクティステーブルへの外部キー制約追加
db/migrate/20250618144325_add_foreign_key_to_practices_source_id.rb
practices テーブルの source_id から practices テーブルの id への自己参照外部キー制約を新規追加するマイグレーションを新規作成。

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related issues

Possibly related PRs

  • お問い合わせ一覧と個別ページに「対応済」スタンプを実装 #8535: 本 PR で追加されるプラクティス source_id に関するインデックスおよび外部キーマイグレーション (db/migrate/20250618142946_add_index_on_source_id_to_practices.rb および db/migrate/20250618144325_add_foreign_key_to_practices_source_id.rb) と直接競合する可能性があるマイグレーション削除を含みます。

Suggested reviewers

  • komagata
  • okuramasafumi

Poem

🐰 マイグレーション調べて、インデックス整え
スキーマ正し、制約も加え
プラクティスに新しき道
テーブルたちは幸せそう ✨

🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. You can run @coderabbitai generate docstrings to improve docstring coverage.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed PR タイトルはマイグレーションファイルの復復とスキーマファイルとの整合に関するもので、raw_summary に記載されたファイル変更内容と完全に一致している。
Description check ✅ Passed PRの説明は日本語テンプレートに従い、Issue番号、概要、変更確認方法、注意事項を含む完全な説明が提供されている。

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@ryufuta ryufuta self-assigned this Jan 7, 2026
@ryufuta ryufuta marked this pull request as ready for review January 7, 2026 07:31
@github-actions github-actions bot requested a review from komagata January 7, 2026 07:31
@ryufuta ryufuta requested a review from matuaya January 7, 2026 08:42
@ryufuta
Copy link
Copy Markdown
Contributor Author

ryufuta commented Jan 7, 2026

@matuaya
お疲れ様です。
お手隙の際にレビューをお願いできますか?
リポジトリを掃除しただけなので全く急ぎではないです。

@matuaya
Copy link
Copy Markdown
Contributor

matuaya commented Jan 7, 2026

@ryufuta
お疲れ様です☺️
レビュー承りました!
最近作業がほとんどできておらず、もしかしたらお時間いただいてしまうかもしれません💦

Copy link
Copy Markdown
Contributor

@matuaya matuaya left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

とても遅れてしまい大変申し訳ありません🙇‍♀️💦
確認しましたのでApproveさせていただきます!

@ryufuta
Copy link
Copy Markdown
Contributor Author

ryufuta commented Jan 19, 2026

@matuaya
全然大丈夫です〜
レビューいただきありがとうございました。

@komagata
レビューをお願いします🙏

Copy link
Copy Markdown
Member

@komagata komagata left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

確認させていただきました。OKです〜🙆‍♂️

@komagata komagata merged commit dedfce1 into main Jan 23, 2026
12 checks passed
@komagata komagata deleted the chore/restore-migration-files branch January 23, 2026 06:50
@github-actions github-actions bot mentioned this pull request Jan 23, 2026
27 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants