Me encontré con un problema en el que estaba trabajando en dos ramas en un proyecto de rieles y cada proyecto tiene una migración para agregar una columna. En ese momento, rake db:migrate:reset
causaba un problema y confiaba únicamente en mi schema.rb
para representar correctamente el estado de mi base de datos. En un momento, me encontré con un problema donde una columna agregada por la rama A se metió en el esquema de la rama B. Como el migrate:reset
no era una opción, recurrí a editar manualmente el archivo de esquema. Cometí este cambio que básicamente eliminó la columna de la rama A que no necesitaba en el esquema schema.rb de la rama B.Se considera seguro editar manualmente schema.rb en rieles
El problema vino después de haber fusionado la rama A en el maestro. Cuando traté de cambiar la base de la rama B a maestra, todavía tenía esa confirmación en B para eliminar la columna (que ahora se ha vuelto relevante porque está en el maestro) en el archivo de esquema. Git no vio un conflicto para esto y lo fusionó automáticamente. Al final de mi rebase, descubrí que mi esquema no es coherente con lo que tengo en master.
Mi solución es editar nuevamente el archivo de esquema y agregar manualmente la columna eliminada nuevamente al archivo de esquema. Mi pregunta es: ¿esto se considera poco convencional? ¿peligroso? ¿Hacky?
En este momento se trata de una columna, pero si esto implicaba eliminaciones/adiciones de varias columnas, ¿la solución (peligrosa) podría generar más problemas y una inconsistencia de db/schema.rb?
De acuerdo. Usted está potencialmente manejando la utilidad de "rake db: migrate version = xxx" y creando dolores de cabeza en el futuro al salir de la reserva y editar manualmente schema.rb. – railsdog