2014-04-24 9 views
5

Sono nuovo di RoR e seguo il tutorial di Michael Hartl (quindi sentiti libero di correggere la terminologia che sto usando dove la vedi). Nel capitolo 2, ho creato una tabella Utenti eseguendo queste linee:Devo annullare un "rails generate scaffold" dopo aver annullato "db: migrate"?

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

Poi, ho eseguito il codice qui sotto per cercare di creare una tabella Microposts (Tuttavia, ho scritto male micropost senza una 'r'!) ..

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

Ora voglio eliminare la tabella Miropost che ho creato. Dopo aver cercato su stackoverflow.com, capisco che posso annullare la migrazione del database (es., Db: migrate) eseguendo rake db:migrate:reset. La mia domanda è: avrei bisogno di annullare anche lo "scaffale generare scaffali"? E quando gli scaffold cessano di esistere?

risposta

11

Per prima cosa è necessario eseguire il rollback delle modifiche da db. Supponendo che la migrazione generata per Miropost rappresenti l'ultima migrazione nel proprio db.

Basta eseguire

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

Dopo questo distruggere il patibolo esistente:

rails destroy scaffold Miropost content:string user_id:integer 

Poi tutto quello che dovete fare è quello di ricreare il patibolo con ortografia corretta ed eseguire rake db:migrate

+1

Grazie! Ha funzionato come un fascino. Solo per il beneficio della mia istruzione, gli scaffold non vengono mai eliminati finché non li distruggono esplicitamente? E quando si fa 'rake db: migrate', fa sempre riferimento al più recente scaffold creato? – ayjay

+2

'scaffold' viene eliminato solo quando lo si elimina esplicitamente con il comando' rails destroy scaffold ... '. 'rake db: migrate' migra tutte le migrazioni in sospeso nella cartella' db/migrate'. –