2009-02-10 6 views

risposta

25

Rails 3 e, soprattutto, utilizzare il seguente codice:

rails generate migration add_fieldname_id_to_tablename fieldname:string 

Rails 2

ruby script/generate migration add_fieldname_to_tablename fieldname:string 

Questo non funziona più e restituisce il seguente errore in Rails 3:

ruby: nessun file o directory - script/generate (LoadError)

+0

Grazie, sarebbe bello eliminare la combinazione non funzionante, tuttavia, confonde un po '... O potrebbe essere una sorta di intestazione (Rails <= 2, Rails > = 3 per esempio). – Wiseman

+0

Grazie Wiseman, appena modificato per tenerne conto, è meglio? – BookOfGreg

+0

Sì, perfetto, grazie :) – Wiseman

12

La risposta migliore che ho trovato finora è gestito questo dalla radice del progetto:

ruby script/generate migration add_d_column_to_myModel 

quindi modificare il nuovo file di migrazione si trova nella db/migrazione verso un aspetto simile:

def self.up 
    add_column :myModel, :d, :string 
    end 

    def self.down 
    remove_column :myModel, :d 
    end 

L'ultimo passo sarà aggiornare di conseguenza le tue visualizzazioni.

risposta trovato here

funzioni Tabella trovato here

+0

Confuso - perché hai fatto la domanda se avevi una buona risposta? Perché non postare questo nella domanda originale e chiedere soluzioni migliori? – zenazn

+1

Penso che tu abbia risposto alla tua stessa domanda. Tuttavia, una cosa che dirò è che in alcuni casi è possibile modificare direttamente la migrazione del modello. Le migrazioni sono grandi quando hai un sito in produzione, ma per uno sviluppo continuo, spesso hai il lusso di spazzare via il DB e ricominciare. –

+2

Ho risposto alla mia stessa domanda per 2 motivi. In primo luogo, questa è stata la risposta migliore che ho trovato, ma sono nuovo di Rails e ho pensato che potrebbe esserci un modo migliore che non ho trovato. In secondo luogo, la domanda non era stata pubblicata su StackOverflow, quindi ho deciso di aggiungerla. –

19
ruby script/generate migration add_fieldname_to_tablename fieldname:string 

questo è il metodo di scelta rapida per fare esattamente quello che vuoi. se hai bisogno di più controllo, o se hai un sacco di colonne da aggiungere, la risposta di Andrew H funzionerà bene.

+0

aggiornerà anche le viste? – femi

+3

No, non aggiornerà le viste. – cynicalman

+0

Questa era la risposta accettata ma l'ho modificata a causa della nota nella risposta di NeoNMD riguardo a questa risposta. –

Problemi correlati