2012-12-21 18 views

cevap

30

column yöntemi için belgelenen sütunlar oluşturulurken bir dizi seçenek var. Sonraki değişiklikleri yaparken add_column'a da başvururlar. sizin veritabanında böyle sınırı getirme derece sıradışı bir not olarak

t.string :name, :limit => 20 
t.string :age, :limit => 6 

ve daha iyi bir çözüm validates kullanılarak model üzerinde sınırlamaktır:

daha sınırlı bir sütun yapmak için en özlü bir yoldur . Örneğin:

validates :name, 
    :presence => true, 
    :length => { :maximum => 20 } 

MySQL böylece bir uzunluk limiti sonunda özellikle bu kadar kısa uzunluğa sahip, veri kaybı yol açacaktır olmamasından, siz söylemeden çok uzun olan değerleri kesmek için bir eğilim vardır.

Veritabanındaki VARCHAR sütunlarının değişken uzunlukta olduğunu unutmayın, bu nedenle VARCHAR(255) ile VARCHAR(20) arasındaki on karakter değerinde depolama avantajı yoktur.

+0

Tek bir soru lütfen .. neden komut satırından bu şekilde '' name: varchar (20) '' modelini oluştururken tanımlamıyoruz, sadece bilmek istiyordum? .. Belirsiz bir soru için sakın unutmayın. –

+0

Modellerin komut satırı üzerinden tanımlanması desteklenir, ancak elde edebileceğiniz şeylerde çok daha sınırlı. Aynı zamanda sahip olmak için oldukça tuhaf bir özellik ve bunu yapmak için neden gerekli olduğundan emin değilim. Bir komut dosyasından kendi tamamen özelleştirilmiş taşıma dosyanızı oluştururken bunu kullanmanın avantajı nedir? Genellikle model, endeksleri eklemek için en azından bazı ancak en önemsiz olan durumlar hariç olmak üzere bazı düzenleme gerektirir. – tadman

+0

Şüphelerimi temizlediğiniz için teşekkürler. –

İlgili konular