Existe-t-il un moyen d'annuler les effets d'une commande d'échafaudage dans Rails?
Existe-t-il un moyen d'annuler les effets d'une commande d'échafaudage dans Rails?
Réponses:
Tout d'abord , si vous avez déjà exécuté les migrations générées par la scaffold
commande, 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.
rake db:rollback
dé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.
git status
et / ou git diff
, pour voir si la commande destroy a manqué quelque chose.
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 ...
rake db:rollback
avant rails destroy scaffold
ou si ce n'est pas le dernier que vous avez ratissé, db:migrate:down VERSION=20080906120000
vous pouvez trouver le numéro avant son nom dans db / migrate
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.
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.
Le meilleur moyen est:
destroy rake db: rake db:rollback
Pour échafaudage:
rails destroy scaffold Name_of_script
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
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
rails g
et rails d
.
vous devez aussi annuler les migrations après avoir détruit l'échafaudage
rails destroy scaffold 'scaffoldname'
rake db:rollback
Ainsi, vous devez suivre le processus pour annuler l'échafaudage dans les rails 4. Exécutez la commande comme ci-dessous:
rails d scaffold FooBar
rake db:rollback
si you_had_run_ rake db:migrate
après avoir créé l'échafaudage ci-dessus?C'est ça!
À votre santé!
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.
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
Oui, le scaffold
lui - même et toutes les choses qui le fusionnent.
La destroy
commande est l'opposé de generate
et annulera celle-ci. Il vous suffit de lui generate
donner 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
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
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
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.
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.
rails g scaffold MyFoo
pour générer et
rails d scaffold MyFoo
pour enlever