Pregunta Cómo soltar columnas con la migración de Rails


¿Cuál es la sintaxis para eliminar una columna de tabla de base de datos a través de una migración de Rails?


506
2018-05-14 00:02


origen


Respuestas:


remove_column :table_name, :column_name

Por ejemplo:

remove_column :users, :hobby

eliminaría la columna de afición de la tabla de usuarios.


750
2018-06-03 05:49



Para versiones anteriores de Rails

ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype

Para Rails 3 y posteriores

rails generate migration RemoveFieldNameFromTableName field_name:datatype

336
2017-09-18 18:22



Rails 4 se ha actualizado, por lo que el método de cambio se puede usar en la migración para eliminar una columna y la migración se retrotraerá con éxito. Lea la siguiente advertencia para las aplicaciones de Rails 3:

Rieles 3 Advertencia

Tenga en cuenta que cuando usa este comando:

rails generate migration RemoveFieldNameFromTableName field_name:datatype

La migración generada se verá más o menos así:

  def up
    remove_column :table_name, :field_name
  end

  def down
    add_column :table_name, :field_name, :datatype
  end

Asegúrese de no utilizar el método de cambio al eliminar columnas de una tabla de base de datos (ejemplo de lo que no desea en el archivo de migración en las aplicaciones de Rails 3):

  def change
    remove_column :table_name, :field_name
  end

El método de cambio en Rails 3 no es inteligente cuando se trata de eliminar_columna, por lo que no podrá deshacer esta migración.


103
2017-07-22 16:12



En una aplicación de rails4 es posible usar el método de cambio también para eliminar columnas. El tercer parámetro es el tipo_de_datos y en el sucesivo opcional puede dar opciones. Está un poco escondido en la sección 'Transformaciones disponibles' en la documentación .

class RemoveFieldFromTableName < ActiveRecord::Migration
  def change
    remove_column :table_name, :field_name, :data_type, {}
  end
end

30
2017-07-09 21:30



Hay dos buenas maneras de hacer esto:

remove_column

Simplemente puede usar remove_column, así:

remove_column :users, :first_name

Esto está bien si solo necesita hacer un único cambio en su esquema.

bloque change_table

También puedes hacer esto usando un bloque change_table, así:

change_table :users do |t|
  t.remove :first_name
end

Prefiero esto porque lo encuentro más legible y puedes hacer varios cambios a la vez.

Aquí está la lista completa de métodos compatibles con change_table:

http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table


20
2018-04-09 12:25



en rails 5 puedes usar este comando en la terminal:

rails generate migration remove_COLUMNNAME_from_TABLENAME COLUMNNAME:DATATYPE

por ejemplo, para eliminar la columna access_level (cadena) de los usuarios de la tabla:

rails generate migration remove_access_level_from_users access_level:string

y luego ejecuta:

rake db:migrate

10
2017-08-24 09:11



rails g migration RemoveXColumnFromY column_name:data_type

X = nombre de la columna
Y = nombre de la tabla

EDITAR

Cambiado RemoveXColumnToY a RemoveXColumnFromY según los comentarios, proporciona más claridad sobre lo que realmente está haciendo la migración.


10
2018-04-06 08:24



Eliminar la aplicación Columns For RAILS 5

rails g migration Remove<Anything>From<TableName> [columnName:type]

El comando anterior genera un archivo de migración dentro db/migrate directorio. El soplo de fragmento es uno de eliminar la columna del ejemplo de tabla generado por el generador Rails,

class RemoveAgeFromUsers < ActiveRecord::Migration
  def up
    remove_column :users, :age
  end
  def down
    add_column :users, :age, :integer
  end
end

También hice una guía de referencia rápida para Rails que se puede encontrar en aquí.


9
2017-09-30 06:49



remove_column :table_name, :column_name

(De los documentos.)


7
2018-05-14 00:04



Para eliminar la columna de la tabla, debe ejecutar la siguiente migración:

rails g migration remove_column_name_from_table_name column_name:data_type

Luego ejecuta el comando:

rake db:migrate

6
2017-08-17 11:15



Dar el comando a continuación, agregará el archivo de migración por sí mismo

rails g migration RemoveColumnFromModel

Después de ejecutar el comando anterior, puede verificar que el archivo de migración remove_column debe agregarse allí por sí mismo

Entonces migra el DB

rake db:migrate

5
2018-02-12 03:06