Cómo soltar columnas usando Rails migración
¿Cuál es la sintaxis para soltar una columna de tabla de base de datos a través de una migración de Rails?
16 answers
remove_column :table_name, :column_name
Por ejemplo:
remove_column :users, :hobby
Eliminaría la columna hobby de la tabla users.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-09 15:03:13
Para versiones anteriores de Rails
ruby script/generate migration RemoveFieldNameFromTableName field_name:datatype
Para los carriles 3 y superiores
rails generate migration RemoveFieldNameFromTableName field_name:datatype
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-11 01:54:51
Rails 4 se ha actualizado, por lo que el método change se puede usar en la migración para soltar una columna y la migración se revertirá correctamente. Por favor, lea la siguiente advertencia para las aplicaciones Rails 3:
Carriles 3 Advertencia
Tenga en cuenta que cuando utiliza este comando:
rails generate migration RemoveFieldNameFromTableName field_name:datatype
La migración generada se verá algo como esto:
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 change al eliminar columnas de una tabla de base de datos (ejemplo de lo que no desea en el archivo de migración en aplicaciones Rails 3):
def change
remove_column :table_name, :field_name
end
El método change en Rails 3 no es inteligente cuando se trata de remove_column, por lo que no podrá revertir esta migración.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-10 20:17:07
En una aplicación rails4 es posible usar el método change también para eliminar columnas. El tercer param es el data_type y en el forth opcional puedes 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-09 21:30:09
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 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 ya que lo encuentro más legible, y puedes hacer varios cambios a la vez.
Aquí está la lista completa de change_table soportada métodos:
Http://apidock.com/rails/ActiveRecord/ConnectionAdapters/SchemaStatements/change_table
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-28 08:35:42
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 ejecutar:
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-24 09:11:40
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 la migración está haciendo realmente.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-13 11:01:03
Eliminar Columnas Para RAILS 5 App
rails g migration Remove<Anything>From<TableName> [columnName:type]
El comando anterior genera un archivo de migración dentro del directorio db/migrate
. Snippet blow es uno de remove column from table ejemplo generado por Rails generator,
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í.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-17 08:36:59
remove_column :table_name, :column_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-01 01:59:07
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 ejecute el comando:
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-02 09:06:50
Dar el siguiente comando se añadirá en el archivo de migración por su cuenta
rails g migration RemoveColumnFromModel
Después de ejecutar el comando anterior, puede verificar el archivo de migración remove_column el código debe agregarse allí por su cuenta
Luego migrar la db
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-02-12 03:06:53
Para eliminar la columna de la tabla en solo 3 pasos sencillos de la siguiente manera:
- escriba 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).
Luego vaya a este archivo.
-
Dentro del archivo tienes que escribir
remove_column :table_name, :column_name
-
Finalmente ir a la consola y luego hacer
rake db:migrate
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-06 10:48:09
remove_column
en el método 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
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-18 00:37:29
Generar una migración para eliminar una columna de tal manera que si se migra (rake db:migrate
), debe eliminar la columna. Y debería agregar columna atrás si esta migración es rollbacked (rake db:rollback
).
La sintaxis:
Remove_column: table_name,: column_name
Elimina la columna pero no puede agregar la columna de nuevo en la reversión.
Ejemplo:
remove_column :users, :last_name
Tenga en cuenta el nombre de la tabla pluralizar: users
El sintaxis:
Remove_column: table_name,: column_name,: type
Elimina la columna, también agrega la columna hacia atrás si la migración es rollbacked.
Ejemplo:
remove_column :users, :last_name, :string
Feliz codificación!
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-13 05:42:22
A Través deremove_column :table_name, :column_name
en un archivo de migración
Puede eliminar una columna directamente en una consola rails escribiendo:ActiveRecord::Base.remove_column :table_name, :column_name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-06 18:08:07
Haz 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 el 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 se reinicie su aplicación.
Ref: Migración fuerte
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-11 07:41:15