¿Es seguro reordenar las columnas en schema.rb para Rails 4 / Postgres?

Running Rails 4 con Postgres 9.4 en desarrollo y producción. Tengo una mesa grande que ha crecido por las migraciones con el tiempo. Debido a las muchas columnas diferentes en la tabla, quiero reordenar las cosas para que las columnas se agrupen de forma más lógica. En otras palabras, algunos elementos de la columna se agrupan naturalmente en función de la información que capturan.

Encontré una discusión sobre el uso de after: en una migración para reordenar columnas (usando ALTER TABLE en SQL), en esta discusión de desbordamiento de stack . Luego seguí adelante y configuré una migración para hacer eso. Después de ejecutar la migración, observo que mi archivo schema.rb no ha cambiado. Mirando las columnas en la base de datos (postgres en desarrollo), tampoco ha cambiado nada allí.

Otras investigaciones me llevaron a la wiki de Postgres , que afirma que actualmente no hay soporte para modificar la posición de la columna en Postgres.

Esto no es crítico para la misión, pero haría la vida más fácil. Mi pregunta es:

  1. Si simplemente muevo las líneas en el archivo schema.rb hacia arriba o hacia abajo para colocarlas según lo deseado, ¿eso causará algún problema? Como espero aprovisionar cualquier base de datos nueva con rake db: schema: load, no parece que eso deba romper nada. Además, dado que las migraciones anteriores no se modificaron materialmente (solo el orden de las columnas que se envían a schema.rb), todo debería ser internamente coherente, ¿no?

  2. Si eso es una mala idea, ¿puedo simplemente volver a las migraciones anteriores, agregar la syntax para after: :some_column a cada elemento de la columna para que configuren correctamente el archivo schema.rb?

Supongo que cuando reconstruyo mi base de datos de producción desde cero con datos semilla, utilizará la estructura del esquema para crear correctamente la tabla en el orden deseado. En este momento no es una base de datos real, implementada con usuarios finales, por lo que no parece ser un problema. Usar la opción # 1 de arriba parece la solución más fácil, siempre y cuando no rompa nada.

Muchas personas nuevas en postgresql a menudo preguntan si tiene soporte para modificar las posiciones de columna dentro de una tabla. Actualmente no lo hace ; Si desea cambiar las posiciones de las columnas, debe volver a crear la tabla o agregar nuevas columnas y mover datos. La idea de permitir el reordenamiento de la posición de la columna no es una contra la que los desarrolladores de postgresql están en contra, es más un caso en el que nadie se ha adelantado para hacer el trabajo.

árbitro

  • Si simplemente muevo las líneas en el archivo schema.rb hacia arriba o hacia abajo para colocarlas según lo deseado, ¿eso causará algún problema?

no. No hace nada con orden de columna en PG .

  • Si eso es una mala idea, ¿puedo simplemente volver a las migraciones anteriores, agregar la syntax para after: :some_column a cada elemento de la columna para que configuren correctamente el archivo schema.rb?

after: :some_column opción after: :some_column no hace nada con el orden de las columnas si usa PG

El orden de tus columnas no importa para Ruby o Rails.

En cuanto a si es importante para cualquier código que escribiste, solo tú y tus exámenes pueden responder eso. Si solo está utilizando ActiveRecord y no está haciendo ningún SQL directo que haga referencia al número de columna, debería estar bien.

Como solución alternativa, puede utilizar anotar para documentar sus modelos en el código y luego reordenar el comentario creado allí.

Por supuesto, eso probablemente se sobrescriba con una anotación una vez que lo ejecute de nuevo. Y solo hará su vida más fácil si observa la estructura de la tabla, pero no ayudará si ejecuta manualmente las consultas SQL con SELECT * en su db.