8

Ruby on Rails'e oldukça yeni geldim ve bir model için veritabanı şemasını düzenlemenin bir yolu olup olmadığını merak ediyordum.Düzenleme Rayları Modelini Komut Satırından Gönderme

Örneğin, benim uygulamada Abone modelimiz var - oluşturduğum yolu

rails generate scaffold Subscriber email:string kullanarak idi Ama şimdi, ben de abone modelinde bir isim istiyorum. Bunu yapmanın kolay bir yolu var mı? Mevcut denetleyicilerime ve görünümlerime çok fazla kod koydum, bu yüzden mutlaka iskele tahrip etmek istemiyorum, ancak modeli düzenlemek istiyorum. peşin

sayesinde

hwrd

Not; Ruby on Rails kullanıyorum 3

+1

Okuma http: //guides.rubyonrails .org/active_record_migrations.html çok yardımcı olmalı. – Hong

cevap

12

Bir ActiveRecord Model, temsil ettiği tabloyu denetler. Yeni bir alan eklemek için modelinizi değiştirmeniz gerekmez (doğrulama eklemek istediğiniz sürece).

rails g migration AddNameToSubscribers name:string 
rake db:migrate 

Sonra kontrolörler ve görünümlerde ad alanı başvuran başlayabilirsiniz: Yapmak istediğiniz ne

kadar için veritabanı geçiş sonra yeni göç yapıp olduğunu.

(Bu jeneratör komut biraz büyülü gibi görünebilir, ama raylar jeneratör Bu biçimin tanır ve uygun add_column ve remove_column kod oluşturur ileri okuma için Rails migration guide bakınız.).

+1

Ama DB'deki eski sütunlar hala yer kaplamıyor mu? Buna öyle bakmamıştım. İyi bir noktaya değindin. – hwrdprkns

+0

@hwrdprkns: Evet, hala yer kaplıyorlar. Ne sorduğundan emin değilim. Bu komut 'name 'alanını' subscribers' tablonuza ekleyecektir. İstediğin bu değil mi? –

+1

Eski sütunlar silinemedi, bu yüzden hala yer kaplayacaklar. Yukarıdaki geçiş, yalnızca aboneler tablosuna bir sütun eklemek, hepsi bu. – Zabba

2

Modelinizin veritabanı şemasını değiştirmeyi kastediyorsanız, geçişleri kullanmak istersiniz. Yalnızca modelleri bularak ve her örneği içindeki verilerin güncellenmesi demek ise

Sen

add_column :city, :string 
remove_column :boo 

http://guides.rubyonrails.org/migrations.html

gibi şeyler yapacağız, @ apneadiving cevabı ile gitmek.

+0

Hızlı yanıtınız için teşekkürler. Veritabanı şemasını değiştirmeyi kastediyorum - üzgünüm, bunu netleştirmedim. Bu komuttan sonra şemam iyi için güncellenecek mi? Ayrıca, sadece bir yan not olarak - remove_column da bu model için sütundaki herhangi bir/tüm verileri bash mı? – hwrdprkns

+0

@hwrdprkns, bir sütun bir tablodan kaldırıldığında, bunun için tüm veriler kaybolur. Ve @Jesse Wolgamott'un söylediği şey, aslında @Josh Lindsey'in söylediği şeyle aynı şeydir .. – Zabba

+0

Maalesef bunu reddettim, demek istemedim! Cevabınızı düzenlerseniz, tekrar oylarım! – hwrdprkns