Sto scrivendo uno script di migrazione per creare una tabella con una colonna chiave primaria denominata guid
ed è una VARCHAR(25)
. Il problema è che mi sento come se dovessi raddoppiare i miei sforzi per ottenere ciò che dovrebbe essere possibile in un unico passaggio.Migrazione delle rotaie Crea tabella Chiave primaria
se corro:
create_table(:global_feeds, :primary_key => 'guid') do |t|
t.string :guid, :limit => 25
t.text :title
t.text :subtitle
...
t.timestamps
end
ottengo una tabella con una chiave primaria chiamata guid
nessuna colonna chiamato id
(che è quello che voglio). Tuttavia, il problema è che la colonna guid
è una INT(11)
con l'incremento automatico attivato. Quindi devo eseguire un comando aggiuntivo:
change_column :global_feeds, :guid, :string, :limit => 25
sembra un po 'contorto di dover correre sostanzialmente due comandi SQL per ottenere ciò che credo dovrebbe essere possibile in uno.
Qualche suggerimento su come ottimizzare questo?
Sfortunatamente, si tratta ancora di due istruzioni SQL come la mia. Hai appena capovolto l'ordine delle operazioni: stai definendo il tipo di colonna prima e poi specificando la chiave primaria. – Ryan
Immagino che non puoi farlo in una sola operazione, ma immagino che non ci sia nulla di sbagliato in questo. È perfettamente ok per la migrazione avere due istruzioni per casi un po 'più complessi. –
Inoltre non sono sicuro se ActiveRecord funzioni correttamente con chiavi primarie non intere. –