2009-02-10 20 views

cevap

25

Raylar yukarıdaki 3 ve aşağıdaki kodu kullanımı:

rails generate migration add_fieldname_id_to_tablename fieldname:string 

raylar 2 Bu artık çalışmaz ve raylar 3 aşağıdaki hata verir

ruby script/generate migration add_fieldname_to_tablename fieldname:string 

:

ruby: Böyle bir dosya veya dizin yok - script/generate (LoadError)

+0

Teşekkürler, çalışmayan kombinasyonu vurmak güzel olurdu, ancak biraz kafa karıştırıcı olabilir ... Ya da bazı başlıklar olabilir (örneğin Rails <= 2, Rails > = 3). – Wiseman

+0

Teşekkürler Wiseman, bunu hesaba katmak için daha iyi, daha iyi mi? – BookOfGreg

+0

Evet, mükemmel, teşekkürler :) – Wiseman

12

Ben proje kökünden bu çalıştırılır şimdiye kadar bulduğum en iyi cevap:

def self.up 
    add_column :myModel, :d, :string 
    end 

    def self.down 
    remove_column :myModel, :d 
    end 
:

ruby script/generate migration add_d_column_to_myModel 

Sonra gibi bir şey bakmak için db/göç bulunan yeni göç dosyasını düzenlemek

Son adım, görünümlerinizi uygun şekilde güncellemek olacaktır.

Cevap here

Tablo fonksiyonları bu tam olarak ne istediğinizi yapmak kısayol yöntemidir here

+0

Şaşkın - iyi bir cevabınız olsaydı soruyu neden sordunuz? Neden asıl soruda bunu yayınlamıyor ve daha iyi çözümler istiyoruz? – zenazn

+1

Sanırım kendi sorunuzu cevapladınız. Bununla birlikte, söyleyeceğim tek şey, bazı durumlarda model geçişini doğrudan düzenleyebileceğinizdir. Üretimde bir siteniz olduğunda göçler harikadır, ancak devam eden gelişim için DB'yi uçurma ve tekrar başlamanın lüksüne sahipsiniz. –

+2

Kendi sorumu 2 nedenden dolayı cevapladım. Birincisi, bu bulduğum en iyi cevaptı, ama Rails için yeni ve bulamadığım daha iyi bir yol olabileceğini düşündüm. İkincisi, soru StackOverflow'ta yayınlanmadı, bu yüzden eklemeye karar verdim. –

19
ruby script/generate migration add_fieldname_to_tablename fieldname:string 

bulduk. Daha fazla kontrole ihtiyacınız varsa veya eklemek için çok fazla sütununuz varsa, Andrew H'nin cevabı da işe yarayacaktır.

+0

bu, görünümleri de güncelleştirecek mi? – femi

+3

Hayır, görünümleri güncellemez. – cynicalman

+0

Bu, kabul edilen cevap olarak kullanıldı, ancak NeoNMD'nin bu yanıtla ilgili yanıtındaki not nedeniyle bunu değiştirdim. –

İlgili konular