From 05bc3fb7f301974d5d0df3f3357536f6b8160191 Mon Sep 17 00:00:00 2001 From: LauAubert Date: Fri, 25 Sep 2026 22:25:47 -0300 Subject: [PATCH] docs: require full real timestamps for new migrations Hand-written round timestamps (e.g. 120000, 000000) make it likely that two branches pick the same migration version. Document that migrations must be generated with the real timestamp and how to check for duplicates. Co-Authored-By: Claude Opus 5.5 --- CLAUDE.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index c7b813ef..18867c09 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -131,6 +131,19 @@ El sistema implementa **row-level multi-tenancy**: todas las empresas comparten #### 1. Migración +> **Regla obligatoria — timestamp completo y real.** Toda migración nueva se genera con +> `bin/rails generate migration NombreDeLaMigracion`, que usa la fecha y hora actuales +> (`YYYYMMDDHHMMSS`, con segundos). **Nunca** escribas el timestamp a mano ni uses valores +> redondeados como `...120000` o `...000000`: dos personas (o agentes) trabajando en ramas +> distintas eligen el mismo número, Rails falla con `DuplicateMigrationVersionError` o, peor, +> una migración queda marcada como corrida sin haberse aplicado. +> +> Si creás el archivo sin el generador, tomá el timestamp de `date -u +%Y%m%d%H%M%S`. +> Antes de pushear, verificá que no haya versiones duplicadas contra `master`: +> `ls db/migrate | cut -c1-14 | sort | uniq -d` (tiene que salir vacío). +> No renombres migraciones que ya están en `master`: cambiarles la versión hace que se +> vuelvan a correr en las bases donde ya se aplicaron. + ```ruby # db/migrate/YYYYMMDDHHMMSS_create_products.rb class CreateProducts < ActiveRecord::Migration[8.1]