用途:在真实生产环境中规划或审查 Rails 数据库迁移,尤其是大表或高负载表上的加列、加索引、加约束、数据回填、重命名、类型变更、表重写等操作。核心原则是优先分阶段发布,而非一次性迁移。
主要能力:提供安全模式速查,例如加列先可空、后回填、最后加 NOT NULL;大表加索引使用 algorithm: :concurrent(PostgreSQL)或 :inplace(MySQL);回填用批处理任务而非放在迁移事务内;重命名采用新增、复制数据、迁移调用方、删除旧列的步骤;加外键前先清理孤儿记录;删列前先移除代码引用。同时给出硬性禁止项:不得把结构变更与数据回填放在同一迁移;不得对未完全回填的列加 NOT NULL;不得在代码引用移除前删列。
使用方式:按审查顺序执行——识别数据库与表规模风险,分离结构变更与数据回填,检查索引、约束、默认值和重写的锁行为,规划应用代码与迁移代码的部署顺序,制定回滚或前向修复策略。若项目使用 strong_migrations 则遵循它,否则手动套用同样的安全规则。示例中 PostgreSQL 并发索引需先 disable_ddl_transaction!,再 add_index :orders, :processed_at, algorithm: :concurrent。
适用场景:生产库迁移评审、PR 中的迁移检查、大表结构演进、多数据库迁移等。限制:资料未提供具体版本要求、性能数据或完整 PATTERNS.md 内容;复杂类型变更、多步唯一约束、外键验证延迟、安全删列等需参考 PATTERNS.md。