¿Cómo especificar el orden del campo para agregar usando la migración en Rails 3?

¿Cómo puedo especificar después de qué campo quiero agregar una nueva columna? (No quiero que el campo se agregue en la parte inferior después de las marcas de tiempo)

add_column :users, :is_active, :boolean

Aquí es cómo:

 add_column :users, :is_active, :boolean, :after => :some_column 

donde: some_column es el nombre de la columna que desea agregar: is_active after.

En general, no puedes y no debes preocuparte. Las tablas en las bases de datos relacionales realmente no tienen ningún orden en particular; por eso siempre debes especificar las columnas cuando INSERTAS y nunca dices cosas como select * ... (sí, ActiveRecord hace eso pero eso no significa que sea una buena idea, solo porque AR salta de un precipicio no lo hace No quiero decir que debas, etc.).

Si insistes en tratar de hacer el trabajo de la base de datos para ello, entonces la forma portátil es:

  1. Copie o cambie el nombre de la tabla a otra tabla.
  2. Suelte el original (a menos que haya cambiado el nombre en (1)).
  3. Cree la nueva tabla con las columnas en el orden que desee.
  4. Espero que la base de datos preste atención a su pedido en (3).
  5. Copie los datos de la tabla en (1) a la tabla “nueva” de (3).
  6. Lucro.

Si está utilizando los adaptadores de base de datos MySQL o MySQL2, puede usar la opción :after => :some_column para add_column . Si está utilizando SQLite o PostgreSQL, entonces vea la forma portátil arriba. Si está utilizando algo más, tendrá que leer la documentación del adaptador o el código fuente para ver qué se admite.

Pero debes preguntarte por qué crees que quieres hacer esto antes de continuar.