¿Es posible cambiar el nombre de una columna usando un comando como:cambiar el nombre de una columna en rieles
script/generate migration AddColumnToTable column:type
? Gracias.
¿Es posible cambiar el nombre de una columna usando un comando como:cambiar el nombre de una columna en rieles
script/generate migration AddColumnToTable column:type
? Gracias.
Rails tiene un comando de migración en ActiveRecord ConnectionAdapter llamado rename_column
. Puede generar una migración y luego escribir el código usted mismo. Ejemplo (MySQL):
script/generate migration rename_my_column_by_hand
luego editar el archivo se crea:
class RenameMyColumnByHand < ActiveRecord::Migration
def self.up
rename_column :my_table, :old_name, :new_name
end
def self.down
rename_column :my_table, :new_name, :old_name
end
end
Ejecuta SQL como:
ALTER TABLE my_table CHANGE old_name new_name BIGINT;
Nota Esto sólo cambia el nombre de la columna, que ganó' t cambie el nombre de cualquier referencia que tenga en otras tablas.
Una gran pregunta. La respuesta es, desafortunadamente, no. Ver Rails 2.3.5 código fuente:
lib/rails_generator/generators/components/migration/migration_generator.rb
Las únicas palabras clave que son reconocidos por el generador de la migración son add
, remove
y to
/from
.
Uso un poco de engaño aquí. Digamos que quiero cambiar la columna foo a la barra.
Crear una migración con los siguientes pasos
Esto es ex-tre-me-ly frágil. Si un paso falla, es posible que pierda datos ..
posible duplicado de [¿Cómo cambiar el nombre de una columna de base de datos en los raíles mediante la migración?] (Http://stackoverflow.com/questions/1992019/how-to-rename-a -database-column-in-rails-using-migration) – CharlesB