Comment inverser une «génération de rails»


471

Je veux supprimer tous les fichiers qu'il a créés et annuler toutes les modifications apportées, mais pas nécessairement à la base de données, mais plus aux fichiers de configuration.

Je voudrais supprimer automatiquement tous les mappages de ressources pour le modèle / contrôleur supprimé dans le fichier routes.rb et partout ailleurs où des modifications auraient pu être apportées?

Réponses:


929
rails destroy controller lalala
rails destroy model yadayada
rails destroy scaffold hohoho

Rails 3.2 ajoute un nouveau draccourci à la commande, vous pouvez donc maintenant écrire:

rails d controller lalala
rails d model yadayada
rails d scaffold hohoho

1
Btw, comment utiliser cette commande pour supprimer un échafaudage? Le modèle et le contrôleur fonctionnent bien ... mais comment inverser complètement un échafaudage?
marcamillion

6
Ok, je l'ai compris. Peut-être que je tapais quelque chose. Je viens de courir rails destroy scaffold lalalalet ça a marché.
marcamillion

38
@marcamillion Ce devait être un «L» supplémentaire.
varatis

1
Qu'en est-il de la suppression des fichiers associés à une installation de gemmes tels querails generate <gemname>:install
doug

2
@doug, je ne pense pas que ce soit possible. Le mieux est de relancer le générateur avec le -fdrapeau pour le forcer à recréer / rééditer les fichiers… Ensuite, vous pouvez voir quels fichiers il a créés / modifiés et continuer à les supprimer manuellement.
Fábio Batista

49

Il vaut la peine de mentionner le -pdrapeau ici ("p" pour faire semblant ).

Si vous ajoutez ceci à la commande, il effectuera simplement un "test" et vous montrera quels fichiers seront supprimés sans réellement les supprimer.

$ rails d controller welcome -p

  remove  app/controllers/welcome_controller.rb
  invoke  erb
  remove    app/views/welcome
  invoke  test_unit
  remove    test/controllers/welcome_controller_test.rb
  invoke  helper
  remove    app/helpers/welcome_helper.rb
  invoke    test_unit
  remove      test/helpers/welcome_helper_test.rb
  invoke  assets
  invoke    coffee
  remove      app/assets/javascripts/welcome.js.coffee
  invoke    scss
  remove      app/assets/stylesheets/welcome.css.scss

Si vous en êtes satisfait, réexécutez la commande sans l' -pindicateur.


Je pense que c'est la meilleure réponse
Emil Reña Enriquez

24

rails destroy controller Controller_namerenvoyait un tas d'erreurs. Pour pouvoir détruire le contrôleur, j'ai dû supprimer les routes associées dans routes.rb. PS J'utilise des rails 3.1


Veuillez ne pas résumer vos actions à moins que vous ne vouliez que cette réponse soit la bonne réponse sélectionnée.
The Tin Man

11

Il s'agit d'un prototype pour générer ou détruire un contrôleur ou un modèle dans Rails:

rails generate/destroy controller/model [controller/model Name]

Par exemple, si vous devez générer un contrôleur utilisateur:

rails generate controller User

ou

rails g controller User

Si vous souhaitez détruire le contrôleur utilisateur ou revenir à l'action ci-dessus, utilisez:

rails destroy controller User

ou:

rails d controller User

entrez la description de l'image ici


4

Vous pouvez utiliser rails d model/controller/migration ...pour détruire ou supprimer les modifications générées à l'aide de la rails generatecommande.

Par exemple:

rails g model Home name:string

crée un modèle nommé homeavec attribut name. Pour supprimer les fichiers et le code générés à partir de cette commande, nous pouvons utiliser

rails d model Home

3

Vous pouvez détruire tout ce qui a été créé de la même manière, sauf un petit changement. Pour le contrôleur,

rails d controller_name (d stands for destroy)

Pour le modèle

rails d model_name

vous venez de mettre d(destroy)au lieu de g(generate)dans votre migration.


3

Si vous préférez supprimer le contrôleur manuellement:

Pour contrôleur welcome

rm app/controllers/welcome_controller.rb
rm app/views/welcome
rm test/controllers/welcome_controller_test.rb
rm app/helpers/welcome_helper.rb
rm test/helpers/welcome_helper_test.rb
rm app/assets/javascripts/welcome.js.coffee
rm app/assets/stylesheets/welcome.css.scss

3

Vous pouvez revenir sur votre

rails g/generate controller/model/migration xxx

sortie en utilisant:

 rails d/destroy controller/model/migration xxx

3

Supposons que j'ai créé un contrôleur nommé "sample" comme:

rails generate controller sample

Si je dois détruire ce contrôleur, tout ce que je dois faire est échange generateavec destroy, comme dans

rails destroy controller sample.

Si vous voulez inverser la génération, tout ce que vous avez à faire est échanger generateavec destroy.


3

Si vous utilisez Rails, utilisez rails d controller Users.

Et, si vous utilisez Zeus, utilisez zeus d controller Users .

D'un autre côté, si vous utilisez git ou SVN, annulez vos modifications avec le numéro de commit. C'est beaucoup plus rapide.


3

Vous pouvez annuler un rails generatedes manières suivantes:

  • Pour le modèle: rails destroy MODEL
  • Pour le contrôleur: rails destroy controller_name

1

Pour inverser cela, nous le détruisons. Ouvrez l'application Terminal et accédez au répertoire du projet, puis saisissez ceci:

rails destroy model CamelCase
rails destroy controller CamelCase

CamelCaseest le nom d'un modèle ou d'un contrôleur. Il supprimera le modèle, la migration et certains des fichiers de test associés. (Vous pouvez voir le résultat dans la fenêtre Terminal après avoir exécuté la commande.)


0

Nous utilisons générer comme rails generate app. Ainsi, la régénération de toute generateinstruction peut être inversée à l'aide de l' destroyinstruction. Remplacez simplement generatepar destroy ie rails generate apppeut être écrit car les rails destroy app' rails génèrent ____ asrails détruisent ____ `


0

Échafaudage supprimé pour le modèle sélectionné:

bin/rails d scaffold <AccessControl> //model name

0

Avant de rétablir le rails generate, assurez-vous d'abord de restaurer la migration .

Cas 1: si vous souhaitez rétablir l'échafaudage, exécutez cette commande:

rails destroy scaffold MODEL_NAME

Cas 2: si vous souhaitez rétablir le modèle, exécutez cette commande:

rails destroy model MODEL_NAME

Cas 3: si vous souhaitez rétablir le contrôleur, exécutez cette commande:

rails destroy controller CONTROLLER_NAME

Remarque: vous pouvez également utiliser un raccourci dau lieu de destroy.


0

Pour inverser rails generate, utilisez rails destroy:

rails destroy Model

Voir " rails destroy" pour plus d'informations.


0

Toutes les versions de rails ont un "destroy", donc-, si vous créez (par exemple) un échafaudage nommé "tâches" à l'aide d'un générateur, pour détruire toutes les modifications de cette étape de génération, vous devrez taper:

rails destroy scaffold Tasks

J'espère que cela vous aide.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.