128 votes

Suppression d'un modèle en rails (inverse de "rails g model Titre...")

rails g model Notation user_id:integer message:string value:integer

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

6 votes

La réponse phare de Mikhail ci-dessous s'applique à un modèle créé lors de la dernière migration. Ceux qui veulent supprimer un modèle et sa table qui existent depuis un certain temps, ce fil de discussion décrit exactement quoi faire.

214voto

Mikhail Nikalyukin Points 7022

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

bundle exec rails db:rollback
rails destroy model 

Pour les versions de rails antérieures à 5.0 et supérieures, utilisez rake au lieu de rails

bundle exec rake db:rollback   
rails destroy model

0 votes

:( Lis la première ligne et fais-le. C'était de ma faute, mais une réponse correctement ordonnée aurait pu aider.

4 votes

Si c'est en développement et que vous n'avez pas peur de perdre vos données, vous pouvez exécuter bundle exec rake db:drop db:create db:migrate. Ce sera une nouvelle base de données vide.

0 votes

Oui merci. J'ai restauré la migration depuis la Corbeille, mais il s'avère que j'avais aussi une autre migration manquante, donc je vais faire ce que vous suggérez.

64voto

fl00r Points 41855

Essayer ceci

rails destroy model Note

Cela supprimera le modèle, la migration, les tests et les fixtures

6 votes

Il supprime tout, mais il ne crée pas de migration descendante ou quelque chose du genre.

31voto

Jenny Lang Points 71

Pour les futurs questionneurs : Si vous ne pouvez pas supprimer les tables depuis la console, essayez de créer une migration qui les supprime pour vous. Vous devriez créer une migration et ensuite dans le fichier noter 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

0 votes

Grande réponse, se comportera comme prévu avec un déploiement capistrano.

24voto

Govind shaw Points 271
  1. Pour supprimer la migration (si vous avez déjà migré la migration)

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

    rails d model name  #name => Nom de votre modèle

1 votes

rails d model est ce que je cherche pour annuler mon rails g model.

4voto

Powers Points 1742

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

Ensuite, remplissez le fichier de migration comme suit :

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

Exécuter rails db:migrate supprimera la table. Si vous exécutez rails db:rollback, Rails affichera une erreur ActiveRecord::IrreversibleMigration.

0 votes

Voici une réponse utile - mais la commande ne fonctionne pas pour moi. J'ai utilisé : bundle exec rails generate migration DropEpisodes Et ensuite j'utiliserais également le code de suppression de modèle ci-dessous.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X