Annuler l'échafaudage dans les rails

493

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

Daniel
la source
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.

Rishav Rastogi
la source
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 ...
Misha Rabinovich
la source
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.

thekindofme
la source
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.

Sudhanshu Arya
la source
10

Le meilleur moyen est:

destroy rake db:  rake db:rollback

Pour échafaudage:

rails destroy scaffold Name_of_script
user917158
la source
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.

RageCore
la source
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
dedennufan
la source
4

Pour générer des échafaudages:

rails generate scaffold xyz

Pour rétablir l'échafaudage:

rails destroy scaffold xyz
uma
la source
4

Les rails détruisent le nom

rake db:rollback
starbuck
la source
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
Amit Suroliya
la source
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
Bhargav Mehta
la source
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é!

Manish Shrivastava
la source
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.

Chutipong Roobklom
la source
1

utilisez ceci

rails d scaffold MODEL_NAME

rake db:rollback
vipin
la source
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

Shoaib Malik
la source
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
Manish
la source
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
JackHasaKeyboard
la source
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
nitanshu verma
la source
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
Ray Lee
la source
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
krishnar
la source
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.

BIlal Khan
la source
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 :)

Maddie
la source
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.

Manoj Kumar
la source
0
rails g scaffold MyFoo 

pour générer et

rails d scaffold MyFoo

pour enlever

Ayaz Ahmad Tarar
la source
Et pas besoin de mentionner les attributs, c'est ça correct? Merci
Shane G