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

ruby-on-rails - remove - rollback migration rails



Migración de rieles por cambio de columna (7)

Tenemos script/generate migration add_fieldname_to_tablename fieldname:datatype sintaxis de script/generate migration add_fieldname_to_tablename fieldname:datatype para agregar nuevas columnas a un modelo.

En la misma línea, ¿tenemos un script / generar para cambiar el tipo de datos de una columna? ¿O debería escribir SQL directamente en mi migración de vainilla?

Quiero cambiar una columna de datetime a date .


Con rieles 5

De guías de rieles :

Si desea que una migración haga algo que Active Record no sepa cómo revertir, puede usar reversible :

class ChangeTablenameFieldname < ActiveRecord::Migration[5.1] def change reversible do |dir| change_table :tablename do |t| dir.up { t.change :fieldname, :date } dir.down { t.change :fieldname, :datetime } end end end end


Como encontré en las respuestas anteriores, se necesitan tres pasos para cambiar el tipo de columna:

Paso 1:

Genera un nuevo archivo de migración usando este código:

rails g migration sample_name_change_column_type

Paso 2:

Vaya a la carpeta /db/migrate y edite el archivo de migración que creó. Hay dos soluciones diferentes.

  1. def change change_column(:table_name, :column_name, :new_type) end

2.

def up change_column :table_name, :column_name, :new_type end def down change_column :table_name, :column_name, :old_type end

Paso 3:

No te olvides de hacer este comando:

rake db:migrate

He probado esta solución para Rails 4 y funciona bien.


Creo que esto debería funcionar.

change_column :table_name, :column_name, :date


No sé si puede crear una migración desde la línea de comandos para hacer todo esto, pero puede crear una nueva migración y luego editar la migración para realizar estas tareas.

Si nombre de tabla es el nombre de su tabla, nombre de campo es el nombre de su campo y desea cambiar de datetime a date, puede escribir una migración para hacer esto.

Puedes crear una nueva migración con:

rails g migration change_data_type_for_fieldname

Luego edita la migración para usar change_table:

class ChangeDataTypeForFieldname < ActiveRecord::Migration def self.up change_table :tablename do |t| t.change :fieldname, :date end end def self.down change_table :tablename do |t| t.change :fieldname, :datetime end end end

A continuación, ejecute la migración:

rake db:migrate


Solo genera migración:

rails g migration change_column_to_new_from_table_name

Actualizar la migración de esta manera:

class ClassName < ActiveRecord::Migration change_table :table_name do |t| t.change :column_name, :data_type end end

y finalmente

rake db:migrate


También puede usar un bloque si tiene varias columnas para cambiar dentro de una tabla.

Ejemplo:

change_table :table_name do |t| t.change :column_name, :column_type, {options} end

Consulte la documentación de la API en la clase Table para obtener más detalles.


Otra forma de cambiar el tipo de datos utilizando la migración

paso 1: debe eliminar el nombre del campo del tipo de datos con error utilizando la migración

ex:

rails g migration RemoveFieldNameFromTableName field_name:data_type

Aquí no olvides especificar el tipo de datos para tu campo.

Paso 2: Ahora puedes agregar un campo con el tipo de datos correcto

ex:

rails g migration AddFieldNameToTableName field_name:data_type

Eso es todo, ahora su tabla se agregará con el campo de tipo de datos correcto, Happy ruby ​​coding !!