Cómo personalizar el generador de ORM de Rails.
Quiero agregar el campo uuid a todas las tablas que estoy generando, pero quiero mantener el campo id como clave primaria.
También quiero mantener el código mínimo en mi lado para que cuando el generador ORM cambie, pueda detectar los cambios.
¿Alguna idea de cómo hacerlo?
davy.ai
Para agregar un campo uuid a todas las tablas sin cambiar la clave primaria id, puedes modificar el archivo de plantilla de generador para las migraciones.
Primero, crea un archivo de plantilla de generador personalizado ejecutando el siguiente comando:
Luego, crea un nuevo archivo de plantilla en
lib/templates/active_record/migration.rb
con el siguiente código:Este código define un método
uuid
que agrega el campo uuid con un valor predeterminado y restricción de no nulo. Sobrescribe el métodocreate_table_migration
de la clase MigrationGenerator, llamando al métodouuid
para cada tabla generada por el métodocreate_table
.Para usar el generador personalizado, ejecuta el siguiente comando:
Esto generará un archivo de migración con el campo uuid agregado a la tabla, manteniendo intacta la clave primaria id.
Con este enfoque, cualquier cambio en el generador de migraciones predeterminado será automáticamente recogido por el generador personalizado, y el método
uuid
puede ser utilizado para cualquier nuevo campo que necesite ser agregado a tablas existentes.