2010-11-12 5 views
396

Par exemple, supprimer tous les fichiers créés et annuler les modifications apportées? Pas nécessairement à la base de données, mais plus aux fichiers de configuration.Comment inverser un 'générer des rails'?

E.g. supprimer automatiquement tous les mappages de ressources pour le modèle/contrôleur supprimé dans le fichier routes.rb et partout ailleurs que des modifications ont pu être apportées?

Merci.

Répondre

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

Rails 3.2 ajoute un nouveau d raccourci vers la commande, alors maintenant vous pouvez écrire:

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

C'est exactement ce que je cherchais. – marcamillion

+1

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

+5

Ok, je l'ai compris. Peut-être que je malaisais quelque chose. Je viens de courir 'rails destroy échafaudage lalalal' et ça a marché. – marcamillion

12

Vous utilisez le contrôle de version (subversion, git, peu importe)? Juste revenir. Si non - pourquoi pas? !!

+0

Hrmm .... intéressant. Je n'ai jamais pensé à cela ... cependant, il se trouve que je ne pense pas avoir un engagement de l'État auquel je veux revenir. C'est une toute nouvelle application et je viens de créer un tas de choses. Mais maintenant je veux m'en débarrasser. Merci pour le conseil si. – marcamillion

+8

Reverting peut supprimer d'autres codes qui n'étaient pas destinés à être supprimés (par exemple, disons que les modifications du contrôleur X sont souhaitées, mais veulent supprimer le contrôleur Y et les modèles associés) – Zabba

+5

@Zabba: Il existe certaines règles du métier: Avant tout destructeur commande, toujours valider. Les générateurs Rails afficheront une liste de ce qu'ils ont modifié/créé. Ils vous préviennent même lorsque vous êtes sur le point d'écraser quelque chose et vous pouvez inspecter les différences. Connaissez vos outils: git vous donne le pouvoir de restaurer sélectivement certains fichiers, et pas d'autres. Vous pouvez le faire sur la ligne de commande, ou si vous utilisez RubyMine, vous aurez de beaux outils graphiques git pour les diffs, rollbacks, commit, etc –

20

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

+5

ouais nice attraper maikel .. je hd même numéro merci – anshuman

3

Vous pouvez utiliser rails d model/controller/migration ... pour détruire ou supprimer les modifications générées à l'aide de la commande generate de rails. Exemple: rails g model Home name:string crée un modèle nommé home avec l'attribut name.Pour supprimer les fichiers et le code généré à partir de cette commande, nous pouvons utiliser la commande rails d model Home.

9

Ceci est un prototype pour générer ou détruire un contrôleur ou un modèle dans des rails.

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

par exemple, si vous avez besoin pour générer contrôleur utilisateur

rails generate controller User 

ou

rails g controller User 

si vous voulez détruire le contrôleur de l'utilisateur ou de revenir à l'action ci-dessus puis

rails destroy controller User 

ou

rails d controller User 

enter image description here

1

vous pouvez revenir à votre sortie rails g/generate controller/model/migration xxx en utilisant:

rails d/destroy controller/model/migration xxx 
1

Si vous utilisez des 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 validation. C'est beaucoup plus rapide.

34

Il est bon de mentionner le drapeau -p ici (p pour faire semblant).

Si vous ajoutez ceci à la commande, vous ferez simplement un "test" et vous verrez quels fichiers seront supprimés sans 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 êtes satisfait, exécutez à nouveau la commande sans l'indicateur -p.

+0

Je pense que c'est le meilleure réponse –

1

Pour inverser cela, nous venons de le détruire. Ouvrez l'application Terminal et accédez au répertoire du projet. Ensuite, tapez ceci:

rails destroy model CamelCase 
rails destroy controller CamelCase 

Où CamelCase est un nom de n'importe quel modèle ou contrôleur. Il supprimera le modèle, la migration et certains des fichiers de test associés. (Vous pouvez voir le résultat sur Terminal après avoir exécuté la commande.)

2

Pour supprimer le contrôleur manuellement, au cas où la commande rails d controller ne fonctionne pas:

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 
1

Vous pouvez défont un rails génèrent de manière suivante:

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

Toutes les générations de rails ont une destruction d'eux, donc, si vous créez par le générateur un (par exemple) échafaudage nommé « tâches », de détruire tous les changements de cette ganerate vous aurez à taper:

rails destroy scaffold Tasks 

Espérons que cela vous aide.

0

Avant de rétablir le rails generate, assurez-vous que annule la migration en premier.

Cas 1: si vous voulez revenir échafaudage exécuter cette commande -

rails destroy scaffold MODEL_NAME 

Cas n ° 2: si vous souhaitez revenir modèle exécuter cette commande -

rails destroy model MODEL_NAME 

Cas n ° 3: si vous voulez revenir contrôleur puis exécutez cette commande -

rails destroy controller CONTROLLER_NAME 

Remarque: vous pouvez également utiliser raccourci d au lieu de destroy

0

échafaudage enlevé pour le modèle sélectionné

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

Supposons que j'ai créé un contrôleur nommé échantillon comme en

rails generate controller sample 

Si je dois détruire ce contrôleur, tout ce que j'ai faire est d'échanger le générer avec détruire, comme dans

rails destroy controller sample. 

Si vous voulez inverser la génération, tout ce que vous devez faire est de swap, le « générer » avec « destroy »

0

Nous utilisons générer comme rails generate app. La régénération d'une instruction generate peut donc être annulée à l'aide de l'instruction destroy. Il suffit de remplacer generate avec destroy dire rails generate app peut être écrit comme rails destroy app' rails génèrent ____ ____ as rails détruisent `