2012-12-21 6 views

Odpowiedz

30

Istnieje kilka opcji tworzenia kolumn, które są udokumentowane dla metody column. Mają również zastosowanie do add_column podczas wykonywania kolejnych modyfikacji.

najbardziej zwięzły sposób, aby bardziej ograniczony kolumnę wynosi:

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

Na marginesie, to bardzo niezwykłe nałożyć ograniczenia takiego w swojej bazie danych i lepszym rozwiązaniem jest ograniczenie na modelu z wykorzystaniem validates . Na przykład:

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

MySQL ma tendencję obciąć wartości, które są zbyt długie, nie informując cię, więc nie mają limit długości ostatecznie doprowadzić do utraty danych, zwłaszcza w tak krótkim długości.

Pamiętaj, że kolumny w bazie danych mają zmienną długość, więc nie ma przewagi zapisu dla dziesięciu znaków w wartości VARCHAR(255) w porównaniu z wartością VARCHAR(20).

+0

Jedno pytanie proszę .. dlaczego nie definiujemy go za pomocą linii poleceń w ten sposób "name: varchar (20)" podczas generowania modelu, po prostu chciałem wiedzieć? .. Proszę nie zwracać uwagi na niejasne pytanie. –

+0

Definiowanie modeli za pomocą wiersza poleceń jest obsługiwane, ale o wiele bardziej ograniczone, co można osiągnąć. Jest to także dość osobliwa cecha i nie jestem pewien, dlaczego byłoby to konieczne. Jaka jest korzyść z używania tego w renderowaniu własnego, w pełni dostosowanego pliku migracji ze skryptu? Zazwyczaj model wymaga co najmniej trochę edycji w celu dodania indeksów, na przykład, z wyjątkiem wszystkich najprostszych przypadków. – tadman

+0

Dziękuję za wyjaśnienie moich wątpliwości. –