run remove rails migrations data create column ruby-on-rails ruby database rails-migrations

ruby on rails - remove - Cómo quitar columnas usando la migración de Rails



remove migration rails (16)

Dé el comando siguiente que agregará en el archivo de migración por sí mismo

rails g migration RemoveColumnFromModel

Después de ejecutar el comando anterior, puede comprobar que el archivo de migración remove_column debe agregarse allí solo.

Luego migra el db

rake db:migrate

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


En los carriles 5 puedes usar este comando en el 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 ejecute:

rake db:migrate


En una aplicación 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 opcional puede dar opciones. Está un poco oculto 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


Genere una migración para eliminar una columna de modo que, si se migra ( rake db:migrate ), debería eliminar la columna . Y debería agregar una columna de vuelta si esta migración se revierte ( rake db:rollback ).

La sintaxis:

remove_column: table_name,: column_name

Elimina la columna, pero no puede volver a agregar la columna al deshacer.

Ejemplo:

remove_column :users, :last_name

Anote el nombre de la tabla pluralizar: usuarios

La sintaxis:

remove_column: table_name,: column_name,: type

Elimina la columna, también agrega la columna de nuevo si se restaura la migración.

Ejemplo:

remove_column :users, :last_name, :string

¡Feliz codificación!


Hay dos buenas maneras de hacer esto:

remove_column

Simplemente puedes usar remove_column, así:

remove_column :users, :first_name

Esto está bien si solo necesita hacer un solo 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 change_table soportados:

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


Hazlo así;

rails g migration RemoveColumnNameFromTables column_name:type

Es decir, los rails g migration RemoveTitleFromPosts title:string

De todos modos, sería mejor considerar el tiempo de inactividad también, ya que ActiveRecord almacena en caché las columnas de la base de datos en tiempo de ejecución, por lo que si elimina una columna, podría causar excepciones hasta que la aplicación se reinicie.

Ref: migración fuerte


Mediante
remove_column :table_name, :column_name
en un archivo de migración

Puede eliminar una columna directamente en una consola de rieles escribiendo:
ActiveRecord::Base.remove_column :table_name, :column_name


Para eliminar la columna de la tabla en tan solo 3 pasos como sigue:

  1. escribe este comando

rails g migration remove_column_from_table_name

después de ejecutar este comando en la terminal, un archivo creado por este nombre y marca de tiempo (remove_column from_table_name).

Entonces ve a este archivo.

  1. dentro del archivo tienes que escribir

    remove_column :table_name, :column_name

  2. Finalmente ir a la consola y luego hacer

    rake db:migrate


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


Para versiones anteriores de Rails.

ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype

Para rieles 3 y superiores

rails generate migration RemoveFieldNameFromTableName field_name:datatype


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 revertirá con éxito. Lea la siguiente advertencia para las aplicaciones de Rails 3:

Advertencia de rieles 3

Tenga en cuenta que cuando utilice este comando:

rails generate migration RemoveFieldNameFromTableName field_name:datatype

La migración generada se verá así:

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

Asegúrese de no usar el método de cambio cuando elimine 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 remove_column, por lo que no podrá revertir esta migración.


remove_column en el método de change le ayudará a eliminar la columna de la tabla.

class RemoveColumn < ActiveRecord::Migration def change remove_column :table_name, :column_name, :data_type end end

Vaya a este enlace para obtener una referencia completa: http://guides.rubyonrails.org/active_record_migrations.html


Eliminar columnas para la aplicación RAILS 5

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

El comando anterior genera un archivo de migración dentro del directorio db/migrate . El golpe de fragmento es uno de la columna de eliminación de ejemplo de tabla generada por el generador de 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 rieles que se puede encontrar here .


rails g migration RemoveXColumnFromY column_name:data_type

X = nombre de columna
Y = nombre de la tabla

EDITAR

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


remove_column :table_name, :column_name

Por ejemplo:

remove_column :users, :hobby

eliminaría la columna de hobby de la tabla de usuarios.