¿Cuál es la sintaxis para colocar una columna de tabla de base de datos a través de una migración de Rails?
625
¿Cuál es la sintaxis para colocar una columna de tabla de base de datos a través de una migración de Rails?
remove_column :table_name, :column_name
Por ejemplo:
remove_column :users, :hobby
eliminaría la columna de hobby de la tabla de usuarios.
up
y losdown
métodos, nochange
, como se explica en la respuesta de @Powers.remove_column :table_name, :column_name, :type, :options
dentro delchange
método, ya que si especifica el tipo, es posible revertir la migración. A partir de la documentación: Latype
yoptions
parámetros serán ignorados si está presente. Puede ser útil proporcionarlos en elchange
método de una migración para que pueda revertirse. En ese caso,type
yoptions
será utilizado por add_column.change
método, pero solo si especifica el tipo de columna. Por ejremove_column, :table_name, :column_name, :column_type
. De lo contrario, recibirá el siguiente error cuando intente ejecutar la migración:remove_column is only reversible if given a type
Para versiones anteriores de Rails
Para rieles 3 y superiores
fuente
rails g migration remove_field_name_from_table_name field_name:datatype
también funcionaAddXXXtoTTT
unaRemoveXXXFromTTT
puede ser seguido por una lista blanca espaciada de filed_name: data_type, y se crearán los estados add_column y remove_column apropiadas:rails g migration RemoveUnusefulFieldsFromUsers hair_color:string favorite_number:integer
elimina dos atributos utilizando una sola migración. Tenga en cuenta también queremove_column
no es compatible con elchange
método, por lo que debe escribir ambosup
ydown
.change
esto. Rollback funciona como debería.change
método que se puede revertir * deberá informar el tipo de datos (y todos los demás modificadores de campo), por lo que si revierte esa migración, el campo se puede recrear correctamente. * Cuando digo revertido, eso es en términos de estructura de la base de datos, por supuesto, los datos de esa columna obviamente se perderán.Rails 4 se ha actualizado, por lo que el método de cambio se puede usar en la migración para descartar una columna y la migración se revertirá con éxito. Lea la siguiente advertencia para las aplicaciones de Rails 3:
Rieles 3 Advertencia
Tenga en cuenta que cuando utiliza este comando:
La migración generada se verá así:
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 Rails 3):
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.
fuente
change
método, elrake db:rollback
comando generará un error.rake db:rollback
es básicamente lo contrario derake db:migrate
. Este error se corrigió en Rails 4 :)En una aplicación rails4 es posible usar el método de cambio también para eliminar columnas. El tercer parámetro es data_type y en el opcional puede dar opciones. Está un poco oculto en la sección 'Transformaciones disponibles' en la documentación .
fuente
Hay dos buenas formas de hacer esto:
remove_column
Simplemente puede usar remove_column, así:
Esto está bien si solo necesita hacer un solo cambio en su esquema.
bloque change_table
También puede hacer esto usando un bloque change_table, así:
Prefiero esto ya que lo encuentro más legible, y puedes hacer varios cambios a la vez.
Aquí está la lista completa de métodos de change_table compatibles:
http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
fuente
en rails 5 puedes usar este comando en la terminal:
por ejemplo, para eliminar la columna access_level (string) de los usuarios de la tabla:
y luego ejecuta:
fuente
Genere una migración para eliminar una columna de modo que si se migra (
rake db:migrate
), se debe soltar la columna . Y debería agregar una columna de nuevo si esta migración se revierte (rake db:rollback
).La sintaxis:
remove_column: table_name,: column_name,: type
Ejemplo:
Nota : Si omite el tipo de datos , la migración eliminará la columna con éxito, pero si revierte la migración arrojará un error.
fuente
Instrucciones claras y simples para rieles 5.2
1. Crear una migración
Ejecute el siguiente comando en su terminal:
rails generate migration remove_fieldname_from_tablename fieldname:fieldtype
Nota: el nombre de la tabla debe estar en forma plural según la convención de rails.
Ejemplo:
En mi caso, quiero eliminar la
accepted
columna (un valor booleano) de laquotes
tabla:rails g migration RemoveAcceptedFromQuotes accepted:boolean
Consulte la documentación sobre: una convención al agregar / eliminar campos a una tabla:
2. Comprueba la migración
3. Ejecute la migración
rake db:migrate
.... Y luego te vas a las carreras!
fuente
rails db:migrate
Eliminar la aplicación Columns For RAILS 5
El comando anterior genera un archivo de migración dentro del
db/migrate
directorio. Snippet Blow es uno de los ejemplos de eliminación de columnas de la tabla generados por el generador Rails,También hice una guía de referencia rápida para Rails que se puede encontrar aquí .
fuente
Puedes probar lo siguiente:
( Documentación oficial )
fuente
X = nombre de columna
Y = nombre de la tabla
EDITAR
Cambiado
RemoveXColumnToY
aRemoveXColumnFromY
según los comentarios, proporciona más claridad sobre lo que realmente está haciendo la migración.fuente
Para eliminar la columna de la tabla, debe ejecutar la siguiente migración:
Luego ejecute el comando:
fuente
Dé el comando a continuación, agregará el archivo de migración por sí solo
Después de ejecutar el comando anterior, puede comprobar que el archivo de migración remove_column code debe agregarse allí por sí solo
Luego migra el db
fuente
remove_column
inchange
te ayudará a eliminar la columna de la tabla.Vaya a este enlace para obtener una referencia completa: http://guides.rubyonrails.org/active_record_migrations.html
fuente
Para eliminar la columna de la tabla en 3 sencillos pasos de la siguiente manera:
rails g migration remove_column_from_table_name
después de ejecutar este comando en la terminal un archivo creado con este nombre y marca de tiempo (remove_column from_table_name).
Luego ve a este archivo.
dentro del archivo tienes que escribir
remove_column :table_name, :column_name
Finalmente ve a la consola y luego haz
rake db:migrate
fuente
Aquí hay uno más de la consola de rieles
ActiveRecord::Migration.remove_column(:table_name, :column_name)
fuente
A través
remove_column :table_name, :column_name
de un archivo de migración
Puede eliminar una columna directamente en una consola de rieles escribiendo:
ActiveRecord::Base.remove_column :table_name, :column_name
fuente
Hazlo así;
rails g migration RemoveColumnNameFromTables column_name:type
Es decir
rails g migration RemoveTitleFromPosts title:string
De todos modos, sería mejor considerar también el tiempo de inactividad, ya que ActiveRecord almacena en caché las columnas de la base de datos en tiempo de ejecución, por lo que si suelta una columna, podría causar excepciones hasta que la aplicación se reinicie.
Ref: migración fuerte
fuente
Simplemente, puedes eliminar la columna
Por ejemplo,
fuente
Primero intente crear un archivo de migración ejecutando el comando:
y luego en el directorio raíz del proyecto ejecute la migración ejecutando el comando:
fuente