run remove rails migrations drop column ruby-on-rails database ruby-on-rails-3 migration rake

ruby on rails - remove - Rails DB Migration-¿Cómo soltar una tabla?



rollback migration rails (19)

  1. carriles g migración drop_users
  2. editar la migración

class DropUsers < ActiveRecord::Migration def change drop_table :users do |t| t.string :name t.timestamps end end end

  1. rastrillo db: migrar

Agregué una tabla que pensé que iba a necesitar, pero ahora ya no planeo usarla. ¿Cómo debo quitar esa mesa?

Ya he ejecutado migraciones, por lo que la tabla está en mi base de datos. Creo que los rails generate migration deberían poder manejar esto, pero todavía no he descubierto cómo.

He intentado:

rails generate migration drop_tablename

pero eso acaba de generar una migración vacía.

¿Cuál es la forma "oficial" de colocar una tabla en Rails?


Abre tu consola de rieles

ActiveRecord::Base.connection.execute("drop table table_name")


Alternativa a generar una excepción o intentar recrear una tabla ahora vacía, mientras se sigue habilitando la reversión de la migración, rehacer, etc.

def change drop_table(:users, force: true) if ActiveRecord::Base.connection.tables.include?(''users'') end


Creo que, para ser completamente "oficial", necesitarías crear una nueva migración y colocar drop_table en self.up. El método self.down debe contener todo el código para recrear la tabla en su totalidad. Es de suponer que ese código podría tomarse de schema.rb en el momento de crear la migración.

Parece un poco extraño, poner un código para crear una tabla que sabes que no vas a necesitar más, pero eso mantendría todo el código de migración completo y "oficial", ¿verdad?

Simplemente hice esto para una mesa que necesitaba dejar, pero honestamente no probé el "down" y no estoy seguro de por qué lo haría.


Escribe tu migración manualmente. Ej. Ejecutar rails g migration DropUsers .

En cuanto al código de la migración, citaré la lista de verificación de Rails Migration de Maxwell Holder.

BAD: ejecutar rake db:migrate y luego rake db:rollback fallará

class DropUsers < ActiveRecord::Migration def change drop_table :users end end

BIEN: revela la intención de que la migración no debe ser reversible

class DropUsers < ActiveRecord::Migration def up drop_table :users end def down fail ActiveRecord::IrreversibleMigration end end

MEJOR - es en realidad reversible

class DropUsers < ActiveRecord::Migration def change drop_table :users do |t| t.string :email, null: false t.timestamps null: false end end end


La forma simple y oficial sería esta:

rails g migration drop_tablename

Ahora vaya a su base de datos / migrar y busque su archivo que contiene el nombre de drop_tablename como nombre de archivo y edítelo a este.

def change drop_table :table_name end

Entonces necesitas correr

rake db:migrate

en tu consola


Necesitaba eliminar nuestros scripts de migración junto con las tablas en sí ...

class Util::Table < ActiveRecord::Migration def self.clobber(table_name) # drop the table if ActiveRecord::Base.connection.table_exists? table_name puts "/n== " + table_name.upcase.cyan + " ! " << Time.now.strftime("%H:%M:%S").yellow drop_table table_name end # locate any existing migrations for a table and delete them base_folder = File.join(Rails.root.to_s, ''db'', ''migrate'') Dir[File.join(base_folder, ''**'', ''*.rb'')].each do |file| if file =~ /create_#{table_name}.rb/ puts "== deleting migration: " + file.cyan + " ! " << Time.now.strftime("%H:%M:%S").yellow FileUtils.rm_rf(file) break end end end def self.clobber_all # delete every table in the db, along with every corresponding migration ActiveRecord::Base.connection.tables.each {|t| clobber t} end end

desde la ventana de terminal ejecutar:

$ rails runner "Util::Table.clobber ''your_table_name''"

o

$ rails runner "Util::Table.clobber_all"


Necesitas crear un nuevo archivo de migración usando el siguiente comando

rails generate migration drop_table_xyz

y escriba el código drop_table en el archivo de migración recién generado (db / migration / xxxxxxx_drop_table_xyz) como

drop_table :tablename

O si desea eliminar una tabla sin migración, simplemente abra la consola de rieles

$ rails c

y ejecuta el siguiente comando

ActiveRecord::Base.connection.execute("drop table table_name")

o puedes usar un comando más simplificado

ActiveRecord::Migration.drop_table(:table_name)


No siempre podrá generar simplemente la migración para que ya tenga el código que desea. Puede crear una migración vacía y luego rellenarla con el código que necesita.

Puede encontrar información sobre cómo realizar diferentes tareas en una migración aquí:

http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

Más específicamente, puede ver cómo eliminar una tabla utilizando el siguiente enfoque:

drop_table :table_name


Primero genera una migración vacía con cualquier nombre que desees. Es importante hacerlo de esta manera ya que crea la fecha apropiada.

rails generate migration DropProductsTable

Esto generará un archivo .rb en / db / migrate / like 20111015185025_drop_products_table.rb

Ahora edita ese archivo para que se vea así:

class DropProductsTable < ActiveRecord::Migration def up drop_table :products end def down raise ActiveRecord::IrreversibleMigration end end

Lo único que agregué fue drop_table :products y raise ActiveRecord::IrreversibleMigration .

Luego ejecuta rake db:migrate y te quitará la tabla.


Puede revertir una migración como está en la guía:

http://guides.rubyonrails.org/active_record_migrations.html#reverting-previous-migrations

Generar una migración:

rails generate migration revert_create_tablename

Escribe la migración:

require_relative ''20121212123456_create_tablename'' class RevertCreateTablename < ActiveRecord::Migration[5.0] def change revert CreateTablename end end

De esta manera también puede revertir y puede usar para revertir cualquier migración


Si bien las respuestas proporcionadas aquí funcionan correctamente, quería algo un poco más ''directo'', lo encontré aquí: link Primero ingrese a la consola de rieles:

$rails console

Entonces simplemente escriba:

ActiveRecord::Migration.drop_table(:table_name)

Y listo, trabajó para mí!


Si quieres soltar una tabla específica puedes hacerlo.

$ rails db:migrate:up VERSION=[Here you can insert timestamp of table]

De lo contrario, si quieres eliminar toda tu base de datos, puedes hacerlo.

$rails db:drop


correr

rake db:migrate:down VERSION=<version>

Donde <version> es el número de versión del archivo de migración que desea revertir.

Ejemplo:-

rake db:migrate:down VERSION=3846656238


la mejor manera que puedes hacer es

rails g migration Drop_table_Users

entonces haz lo siguiente

rake db:migrate


simplemente puedes dejar caer una mesa desde la consola de rieles. primero abre la consola

$ rails c

luego pega este comando en la consola

ActiveRecord::Migration.drop_table(:table_name)

Reemplace table_name con la tabla que desea eliminar.

También puedes soltar la tabla directamente desde el terminal. simplemente ingrese en el directorio raíz de su aplicación y ejecute este comando

$ rails runner "Util::Table.clobber ''table_name''"


ActiveRecord::Base.connection.drop_table :table_name


Drop Table / Migration

ejecutar: - $ rails generar migración DropTablename

exp: - $ rails generan migración DropProducts


Ejecute este comando: -

rails g migration drop_table_name

entonces:

rake db:migrate

o si está utilizando la base de datos MySql entonces:

  1. iniciar sesión con la base de datos
  2. show databases;
  3. show tables;
  4. drop table_name;