web-dev-qa-db-fra.com

Supprimer un modèle dans Rails (l'inverse de "Rails g model Title ...")

Rails g model Rating user_id:integer message:string value:integer

Comment puis-je supprimer complètement ce modèle? Merci

108
Colbern
bundle exec rake db:rollback    
Rails destroy model <model_name>

Lorsque vous générez un modèle, il crée une migration de base de données. Si vous exécutez 'destroy' sur ce modèle, le fichier de migration sera supprimé, mais pas la table de base de données. Donc avant de courir

bundle exec rake db:rollback
184
Mikhail Nikalyukin

Essaye ça

Rails destroy model Rating

Il va supprimer le modèle, la migration, les tests et les fixtures

47
fl00r

Pour les futurs questionneurs: Si vous ne pouvez pas supprimer les tables de la console, essayez de créer une migration qui supprime les tables pour vous. Vous devez créer une migration puis, dans le fichier, les tables que vous voulez supprimer comme ceci:

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

  def down
    raise ActiveRecord::IrreversibleMigration
  end
end
28
Jenny Lang
  1. Pour supprimer la migration (si vous avez déjà migré la migration)

    rake db:migrate:down VERSION="20130417185845" #Your migration version
    
  2. Pour supprimer le modèle

    Rails d model name  #name => Your model name
    
16
Govind shaw

Voici une implémentation différente de la réponse de Jenny Lang qui fonctionne pour Rails 5.

Commencez par créer le fichier de migration:

bundle exec be Rails g migration DropEpisodes

Puis remplissez le fichier de migration comme suit:

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

Fonctionnement Rails db:migrate va laisser tomber la table. Si vous exécutez Rails db:rollback, Rails lancera un ActiveRecord::IrreversibleMigration Erreur.

2
Powers