2012-12-21 13 views

risposta

30

C'è un numero di opzioni durante la creazione di colonne documentate per il metodo column. Si applicano anche a add_column quando si effettuano modifiche successive.

Il modo più rapido per creare una colonna più limitato è:

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

Come nota, è altamente inusuale di imporre limiti di questo tipo nel database e una soluzione migliore è quello di limitare il modello utilizzando validates . Per esempio:

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

MySQL ha la tendenza a troncare i valori che sono troppo a lungo senza che ti dice, in modo da non avere un limite di lunghezza si concluda con la perdita di dati, in particolare con una breve lunghezza tale.

Ricordare che le colonne VARCHAR nel database sono di lunghezza variabile, quindi non c'è vantaggio di archiviazione per un valore di dieci caratteri in un VARCHAR(255) rispetto a VARCHAR(20).

+0

Una domanda per favore .. perché non la definiamo tramite la riga di comando in questo modo 'nome: varchar (20)' mentre si genera il modello, ero solo ansioso di sapere? .. Per favore non ti dispiace per una domanda vaga. –

+0

La definizione dei modelli tramite la riga di comando è supportata, ma molto più limitata in ciò che è possibile ottenere. È anche una caratteristica piuttosto peculiare e non sono sicuro del perché sarebbe necessario farlo. Qual è il vantaggio di utilizzarlo per rendere il tuo file di migrazione completamente personalizzato da uno script? Di solito il modello richiede almeno un po 'di editing per aggiungere indici, ad esempio, tranne che in tutti i casi tranne i più banali. – tadman

+0

Grazie per aver chiarito i miei dubbi. –