2014-04-24 19 views
5

RoR'da yeniyim ve Michael Hartl'ın eğitimini takip ediyorum (bu yüzden uygun gördüğünüz terminolojiyi düzeltmek için çekinmeyin). 2. Bölümde, ben bu satırları çalıştırarak Kullanıcılar tablo oluşturdu:Bir "db: migrate" işlemi geri döndükten sonra bir "raylar iskeleler oluşturur" geri almam gerekir mi?

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

Sonra ben bir Microposts tablo oluşturmak için denemek için aşağıdaki kodu koştum (Ancak, bir 'r' olmadan Micropost yanlış yazılmış!) ..

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

Şimdi oluşturduğum Miropost tablosunu silmek istiyorum. Stackoverflow.com'da arama yaptıktan sonra, veritabanı geçişini (yani. Db: migrate) rake db:migrate:reset çalıştırarak geri alabildiğimi anlıyorum. Sorum şu ki "raylar da iskele oluşturmaya" gerek var mı? Ve iskeleler ne zaman ortadan kalkar?

cevap

11

İlk olarak, değişiklikleri db'den geri almanız gerekir. Miropost için oluşturulan geçişin, db'unuzdaki en son geçiş olduğunu varsayalım.

rails destroy scaffold Miropost content:string user_id:integer 

Sonra tüm yapmanız gereken doğru yazımla iskeleyi yeniden ve rake db:migrate

+1

Teşekkür çalıştırmaktır:

Sadece bu, mevcut iskeleyi yok ettikten sonra

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

koş! Büyüleyici bir şekilde çalıştı. Sadece benim okulumun yararı için, iskeleler açık bir şekilde onları yok edene kadar asla silinmez mi? Ve bir kişi "db: migrate" tırdığında, her zaman oluşturulan en yeni scaffold'a başvurur mu? – ayjay

+2

'scaffold' sadece açık bir şekilde 'sicffold ...' komutunu silmeyle sildiğinizde silinir. "dd: migrate", "db/migrate" klasöründeki bekleyen tüm geçişleri taşıyacak. –

İlgili konular