2014-04-24 6 views
5

Ich bin neu in RoR und ich befolge Michael Hartls Tutorial (so frei, die Terminologie zu korrigieren, die ich benutze, wo Sie es für richtig halten). In Kapitel 2 habe ich eine Tabelle Benutzer durch diese Zeilen ausgeführt wird:Müsste ich ein "rails generate scaffold" rückgängig machen, nachdem ich ein "db: migrate" rückgängig gemacht habe?

$ rails generate scaffold User name:string email:string 
$ bundle exec rake db:migrate 

Dann habe ich den Code unten lief, um zu versuchen eine Microposts Tabelle zu erstellen (jedoch falsch geschrieben ich Micropost ohne ‚r‘!) .. .

$ rails generate scaffold Miropost content:string user_id:integer 
$ bundle exec rake db:migrate 

Jetzt möchte ich die Miropost Tabelle löschen, die ich erstellt habe. Nach dem Durchsuchen in stackoverflow.com verstehe ich, dass ich die Datenbankmigration rückgängig machen kann (dh, db: migrate), indem ich rake db:migrate:reset ausführe. Meine Frage ist, ob ich das "rails generate scaffold" auch rückgängig machen müsste? Und wann hören Gerüste auf zu existieren?

Antwort

11

Zuerst müssten Sie die Änderungen von db zurücksetzen. Angenommen, die für Miropost generierte Migration ist die letzte Migration in Ihrer db.

Führen Sie einfach

rake db:rollback ## This will drop the table miroposts 

Danach das bestehende Gerüst zerstören:

rails destroy scaffold Miropost content:string user_id:integer 

Dann alles, was Sie tun müssen, ist das Gerüst mit korrekter Rechtschreibung neu und rake db:migrate

+1

Dank laufen! Das hat wie ein Zauber funktioniert. Nur zum Vorteil meiner Ausbildung: Werden Gerüste nie gelöscht, bis Sie sie explizit zerstören? Und wenn man "rake db: migrate" nennt, bezieht es sich immer auf das neueste erstellte Gerüst? – ayjay

+2

'scaffold' würde nur gelöscht, wenn Sie es explizit mit dem Befehl' rails destroy scaffold ...' löschen. 'rake db: migrate' migriert alle ausstehenden Migrationen im Ordner' db/migrate'. –

Verwandte Themen