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)
.
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. –
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
Dziękuję za wyjaśnienie moich wątpliwości. –