Eliminación de un modelo en rieles (reverso de "rieles g modelo Título ...")

115
rails g model Rating user_id:integer message:string value:integer

¿Cómo puedo eliminar completamente este modelo? Gracias

Colbern
fuente
5
La respuesta principal de Mikhail a continuación se aplica a un modelo creado en la última migración. Aquellos que quieran eliminar un modelo y su tabla que han existido por un tiempo, este hilo describe exactamente qué hacer.
Ninjakannon

Respuestas:

192
bundle exec rake db:rollback    
rails destroy model <model_name>

Cuando genera un modelo, crea una migración de base de datos. Si ejecuta 'destruir' en ese modelo, eliminará el archivo de migración, pero no la tabla de la base de datos. Así que antes de correr

bundle exec rake db:rollback
Mikhail Nikalyukin
fuente
:( Leí la primera línea y lo hice. Fue mi culpa, pero una respuesta ordenada correctamente puede haber ayudado.
Mike T
4
si se trata de desarrollo y no teme perder sus datos, puede ejecutarlo bundle exec rake db:drop db:create db:migrate. Será una nueva base de datos vacía.
Mikhail Nikalyukin
Gracias. Restablecí la migración de la Papelera, pero resulta que también me faltaba otra migración, así que haré lo que sugieres
Mike T
6
@MikeT ¿Tú qué? ¿Restaurado la migración de la basura? ¿No usa ningún VCS? o_O ¡Deberías absolutamente!
iam plunntic
Funcionó para mí, pero también tuve que ir a route.rb y eliminar "devise_for: MODEL"
cormacncheese
54

Prueba esto

rails destroy model Rating

Eliminará modelo, migración, pruebas y accesorios.

fl00r
fuente
5
Elimina todo, pero no crea una migración de degradación o algo así.
Señor
28

Para futuros interesados: si no puede eliminar las tablas de la consola, intente crear una migración que elimine las tablas por usted. Debe crear una migración y luego en las tablas de notas de archivo que desea colocar de esta manera:

class DropTables < ActiveRecord::Migration
  def up
    drop_table :table_you_dont_want
  end

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end
Jenny Lang
fuente
Gran respuesta, se comportará como se esperaba con un despliegue capistrano.
LessQuesar
18
  1. Para eliminar la migración (si ya migró la migración)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
  2. Para eliminar el modelo

    rails d model name  #name => Your model name
Govind Shaw
fuente
rails d modeles lo que estoy buscando para revertir mi rails g model.
Komsun K.
3

Aquí hay una implementación diferente de la respuesta de Jenny Lang que funciona para Rails 5.

Primero cree el archivo de migración:

bundle exec be rails g migration DropEpisodes

Luego, complete el archivo de migración de la siguiente manera:

class DropEpisodes < ActiveRecord::Migration[5.1]
  def change
    drop_table :episodes
  end
end

Correr rails db:migratedejará caer la mesa. Si ejecuta rails db:rollback, Rails arrojará un ActiveRecord::IrreversibleMigrationerror.

Potestades
fuente
Esta es una respuesta útil, pero el comando no me funciona. Usé: los rieles ejecutivos del paquete generan episodios de caída de migración Y luego también usaría el código de eliminación del modelo a continuación.
Andrew Spode