Annuler l'échafaudage dans les rails


493

Existe-t-il un moyen d'annuler les effets d'une commande d'échafaudage dans Rails?


4
rails détruisent l'échafaudage xxx
Robin Garg

1
Dans Rails 5: Générez un échafaudage avec: $ rails generate scaffold <name>. Si vous avez migré vos fichiers, effectuez une restauration: $ rake db: restauration . Détruisez ou annulez l'échafaudage avec: $ rails destroy scaffold <nom>. Vous pouvez en savoir plus à ce sujet sur
Nesha Zoric

Réponses:


777

Tout d'abord , si vous avez déjà exécuté les migrations générées par la scaffoldcommande, vous devez d'abord effectuer une restauration.

rake db:rollback

Vous pouvez créer des échafaudages en utilisant:

rails generate scaffold MyFoo 

(ou similaire), et vous pouvez le détruire / annuler en utilisant

rails destroy scaffold MyFoo

Cela supprimera tous les fichiers créés par generate, mais pas les modifications supplémentaires que vous auriez pu apporter manuellement.


11
N'oubliez pas de rake db:rollbackdétruire votre échafaudage. Cela détruira / supprimera la table s'il n'y a pas d'autre migration que la migration de l'échafaudage avant elle.
Yakob Ubaidi

3
Dans certains cas, il reste des fichiers qui n'ont pas été supprimés de l'échafaudage. Vérifiez votre contrôle de version, par exemple git statuset / ou git diff, pour voir si la commande destroy a manqué quelque chose.
codage aaron

1
Si vous avez exécuté rake db: migrate a effectué d'autres migrations après cela, il est logique de créer une migration pour détruire la table avant de "détruire" l'échafaudage. faites donc quelque chose comme la migration des rails g DropMyFoos, puis ouvrez le fichier de migration et ajoutez le code pour supprimer la table. Exécutez cette migration, puis exécutez l'échafaudage destroy.
Vikram Sharma

Gardez également à l'esprit que cela supprimera le dossier de vue de my_foo, même si vous y avez des fichiers supplémentaires.
Andrew K

167

Rishav Rastogi a raison, et avec les rails 3.0 ou supérieurs, son:

les rails génèrent un échafaudage ...
les rails détruisent l'échafaudage ...

8
@femi La table a été faite avec du râteau. La meilleure façon de le supprimer est de s'exécuter rake db:rollbackavant rails destroy scaffoldou si ce n'est pas le dernier que vous avez ratissé, db:migrate:down VERSION=20080906120000vous pouvez trouver le numéro avant son nom dans db / migrate
Travis Pessetto

40

Vous pouvez annuler tout ce que vous avez fait avec

rails generate xxx

Par

rails destroy xxx

Par exemple, cela applique des générateurs à la migration, à l'échafaudage, au modèle, etc.


13

Si vous voulez simplement voir les fichiers qu'un générateur va créer, vous pouvez passer l'option --pretend ou -p du générateur.


10

Le meilleur moyen est:

destroy rake db:  rake db:rollback

Pour échafaudage:

rails destroy scaffold Name_of_script

8
rails d scaffold <scaffoldname>

Assurez-vous également d'annuler la migration que vous avez effectuée par restauration ou vers une version particulière.


8

pour la première fois, vous pouvez vérifier la migration de votre base de données si vous avez généré un échafaudage. vous devez les détruire pour nettoyer votre base de données

rake db:rollback

puis

rails d scaffold

4

Pour générer des échafaudages:

rails generate scaffold xyz

Pour rétablir l'échafaudage:

rails destroy scaffold xyz

4

Les rails détruisent le nom

rake db:rollback

1
premier retour en arrière (si vous avez migré), puis détruisez l'échafaudage
gavit

3

Pour générer des échafaudages dans des rails -

rails generate scaffold MODEL_GOES_HERE

Pour défaire l'échafaudage dans les rails -

rails destroy scaffold MODEL_GOES_HERE

2
Aussi des raccourcis rails get rails d.
steve klein

2

vous devez aussi annuler les migrations après avoir détruit l'échafaudage

rails destroy scaffold 'scaffoldname'
rake db:rollback

2

Ainsi, vous devez suivre le processus pour annuler l'échafaudage dans les rails 4. Exécutez la commande comme ci-dessous:

  1. rails d scaffold FooBar
  2. rake db:rollbacksi you_had_run_ rake db:migrateaprès avoir créé l'échafaudage ci-dessus?

C'est ça!

À votre santé!


2

Recommander une restauration Tout d'abord, saisissez votre terminal.

rake db:rollback

Ajouter un échafaudage de destruction (le «d» signifie «détruire»)

rails d scaffold name_of_scaffold

Profitez de votre code.


1

utilisez ceci

rails d scaffold MODEL_NAME

rake db:rollback

1

Vous devrez d'abord faire le rake db: rollback pour détruire la table
si vous avez déjà exécuté rake db: migrate et ensuite vous pouvez exécuter

rails d échafaudage Modèle


1

vous devez d'abord annuler les migrations en effectuant le rake db: annuler le cas échéant, puis détruire l'échafaudage en

rails d scaffold foo

1

Oui, le scaffoldlui - même et toutes les choses qui le fusionnent.

La destroycommande est l'opposé de generateet annulera celle-ci. Il vous suffit de lui generatedonner le nom de la même manière et il sera supprimé de votre projet:

rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text

1

Pour générer l'échafaudage:

rails generate scaffold abc

Pour rétablir cet échafaudage:

rails destroy scaffold abc

Si vous avez exécuté la migration pour cela, il suffit de revenir en arrière

rake db:rollback STEP=1

1

fournisseur une autre solution basée sur git

démarrer un nouveau projet

rails new project_name
cd project_name

initialiser git

git init
git commit -m "initial commit"

créer un échafaudage

rails g scaffold MyScaffold
rake db:migrate

faire reculer l'échafaudage

rake db:rollback
git reset --hard
git clean -f -d

1

rails [option] échafaudage nom_échafaudage

Option

g    generate
d    destroy

Si tu fais

rails g  scaffold myFoo

Puis inversez-le en utilisant

rails d scaffold MyFoo

0

Lorsque nous générons un échafaudage, les fichiers suivants seront créés:

Commander: rails generate scaffold Game

Fichiers créés:

>       invoke  active_record
>       create    db/migrate/20160905064128_create_games.rb
>       create    app/models/game.rb
>       invoke    test_unit
>       create      test/models/game_test.rb
>       create      test/fixtures/games.yml
>       invoke  resource_route
>        route    resources :games
>       invoke  inherited_resources_controller
>       create    app/controllers/games_controller.rb
>       invoke    erb
>       create      app/views/games
>       create      app/views/games/index.html.erb
>       create      app/views/games/edit.html.erb
>       create      app/views/games/show.html.erb
>       create      app/views/games/new.html.erb
>       create      app/views/games/_form.html.erb
>       invoke    test_unit
>       create      test/controllers/games_controller_test.rb
>       invoke    helper
>       create      app/helpers/games_helper.rb
>       invoke      test_unit
>       create        test/helpers/games_helper_test.rb
>       invoke    jbuilder
>       create      app/views/games/index.json.jbuilder
>       create      app/views/games/show.json.jbuilder
>       invoke  assets
>       invoke    coffee
>       create      app/assets/javascripts/games.js.coffee
>       invoke    scss
>       create      app/assets/stylesheets/games.css.scss
>       invoke  scss
>       create    app/assets/stylesheets/scaffolds.css.scss

Si nous avons exécuté la migration après cela, nous devons d'abord annuler la migration car la suppression de l'échafaudage supprimera également le fichier de migration et nous ne pourrons pas annuler cette migration.

Dans le cas où nous avons exécuté la migration:

rake db:rollback

et après cela, nous pouvons retirer l'échafaudage en toute sécurité par cette commande.

rails d scaffold Game

Cette commande supprimera tous les fichiers créés par l'échafaudage dans votre projet.


0

Chaque fois que vous exécutez rails g, vous pouvez l'inverser en exécutant rails d(détruire) pour supprimer ce que vous avez généré. Si vous avez déjà couru rake db:migrate, vous devrez courir rake db:rollbackavant de détruire :)


0

Cas 1: si vous exécutez uniquement cette commande pour générer un échafaudage -

rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE

Ex - rails generate scaffold User name:string address:text

mais jusqu'à présent, vous n'avez exécuté aucune commande de migration comme

rake db:migrate

alors vous devez exécuter uniquement cette commande comme -

rails destroy scaffold User name:string address:text

Cas 2: Si vous exécutez déjà (Scaffold et Migration) par les commandes ci-dessous comme -

rails generate scaffold User name:string address:text

rake db:migrate 

Ensuite, vous devez exécuter la première commande de migration de restauration puis détruire l'échafaudage comme ci-dessous -

rake db:rollback

rails destroy scaffold User name:string address:text

Ainsi, de cette manière, nous pouvons annuler l'échafaudage. Nous pouvons également utiliser d pour détruire et g pour générer comme raccourci.


0
rails g scaffold MyFoo 

pour générer et

rails d scaffold MyFoo

pour enlever


Et pas besoin de mentionner les attributs, c'est ça correct? Merci
Shane G
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.