Gibt es eine Möglichkeit, die Auswirkungen eines Gerüstbefehls in Rails rückgängig zu machen?
Gibt es eine Möglichkeit, die Auswirkungen eines Gerüstbefehls in Rails rückgängig zu machen?
Antworten:
Erstens , wenn Sie bereits die Migration durch die erzeugte ausgeführt haben scaffold
Befehl, müssen Sie zunächst ein Rollback durchführen.
rake db:rollback
Sie können Gerüste erstellen mit:
rails generate scaffold MyFoo
(oder ähnlich), und Sie können es mit zerstören / rückgängig machen
rails destroy scaffold MyFoo
Dadurch werden alle Dateien gelöscht, die von erstellt wurden generate
, jedoch keine zusätzlichen Änderungen, die Sie möglicherweise manuell vorgenommen haben.
rake db:rollback
bevor Sie Ihr Gerüst zerstören. Dadurch wird die Tabelle zerstört / gelöscht, wenn außer der vorherigen Migration des Gerüsts keine andere Migration erfolgt.
git status
und / oder git diff
, um festzustellen, ob der Befehl destroy etwas übersehen hat.
Rishav Rastogi hat recht und mit Rails 3.0 oder höher ist es:
Schienen erzeugen Gerüst ...
Schienen zerstören Gerüst ...
rake db:rollback
vor rails destroy scaffold
oder wenn es nicht der letzte ist, den Sie geharkt haben db:migrate:down VERSION=20080906120000
, können Sie die Nummer vor ihrem Namen in db /
Sie können alles rückgängig machen, was Sie getan haben
rails generate xxx
Durch
rails destroy xxx
Dies gilt beispielsweise für Generatoren für Migration, Gerüst, Modell usw.
Wenn Sie nur die Dateien anzeigen möchten, die ein Generator erstellt, können Sie die Option --pretend oder -p des Generators übergeben.
Der beste Weg ist:
destroy rake db: rake db:rollback
Für das Gerüst:
rails destroy scaffold Name_of_script
Zum ersten Mal können Sie Ihre Datenbankmigration überprüfen, wenn Sie ein Gerüst generiert haben. Sie müssen sie zerstören, um Ihre Datenbank zu bereinigen
rake db:rollback
dann
rails d scaffold
Zur Erzeugung von Gerüsten in Schienen -
rails generate scaffold MODEL_GOES_HERE
Zum Rückgängigmachen des Gerüsts in Schienen -
rails destroy scaffold MODEL_GOES_HERE
rails g
und rails d
.
Sie müssen auch Migrationen zurücksetzen, nachdem Sie das Gerüst zerstört haben
rails destroy scaffold 'scaffoldname'
rake db:rollback
Gehen Sie also wie folgt vor, um das Gerüst in Schienen rückgängig zu machen. 4. Führen Sie den Befehl wie folgt aus:
rails d scaffold FooBar
rake db:rollback
Wenn Sie rake db:migrate
nach dem Erstellen des obigen Gerüsts einen Lauf hatten ?Das ist es!
Prost!
Rollback empfehlen Geben Sie zunächst Ihr Terminal ein.
rake db:rollback
Zerstörungsgerüst hinzufügen (das 'd' steht für 'zerstören')
rails d scaffold name_of_scaffold
Viel Spaß mit Ihrem Code.
Zuerst müssen Sie den Rake db: rollback
ausführen, um die Tabelle zu zerstören, wenn Sie bereits rake db: migrate ausgeführt haben, und dann können Sie ausführen
Schienen d Gerüst Modell
Ja, das scaffold
selbst und all die Dinge, die es zusammenführen.
Der destroy
Befehl ist das Gegenteil von generate
und macht einen rückgängig. Übergeben Sie es einfach auf die gleiche Weise wie bei generate
und es wird aus Ihrem Projekt entfernt:
rails generate scaffold posts title:string content:text
rails destroy scaffold posts title:string content:text
So erstellen Sie das Gerüst:
rails generate scaffold abc
So stellen Sie dieses Gerüst wieder her:
rails destroy scaffold abc
Wenn Sie die Migration dafür ausgeführt haben, führen Sie einfach ein Rollback durch
rake db:rollback STEP=1
Anbieter eine andere Lösung basierend auf Git
Starten Sie ein neues Projekt
rails new project_name
cd project_name
git initialisieren
git init
git commit -m "initial commit"
ein Gerüst erstellen
rails g scaffold MyScaffold
rake db:migrate
Rollen Sie das Gerüst zurück
rake db:rollback
git reset --hard
git clean -f -d
Wenn wir ein Gerüst erstellen, werden folgende Dateien erstellt:
Befehl: rails generate scaffold Game
Erstellte Dateien:
> 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
Wenn wir die Migration danach ausgeführt haben, müssen wir zuerst die Migration zurücksetzen, da durch das Löschen des Gerüsts auch die Migrationsdatei entfernt wird und wir diese Migration nicht zurücksetzen können.
Falls wir die Migration ausgeführt haben:
rake db:rollback
und danach können wir das Gerüst durch dieses Kommad sicher entfernen.
rails d scaffold Game
Dieser Befehl entfernt alle Dateien, die vom Gerüst in Ihrem Projekt erstellt wurden.
Fall 1: Wenn Sie nur diesen Befehl ausführen, um ein Gerüst zu generieren -
rails generate scaffold MODEL_NAME FIELD_NAME:DATATYPE
Ex - rails generate scaffold User name:string address:text
aber bis jetzt haben Sie keinen Befehl für die Migration wie ausgeführt
rake db:migrate
dann sollten Sie nur diesen Befehl ausführen müssen wie -
rails destroy scaffold User name:string address:text
Fall 2: Wenn Sie bereits (Scaffold and Migration) mit den folgenden Befehlen ausführen:
rails generate scaffold User name:string address:text
rake db:migrate
Dann sollten Sie zuerst den Rollback-Migrationsbefehl ausführen und dann das Gerüst wie unten beschrieben zerstören müssen -
rake db:rollback
rails destroy scaffold User name:string address:text
Auf diese Weise können wir das Gerüst lösen. Wir können auch d zum Zerstören und g zum Generieren als Verknüpfung verwenden.
rails g scaffold MyFoo
zum Erzeugen und
rails d scaffold MyFoo
zum Entfernen