Come si modifica un modello generato utilizzando la modellazione? Ad esempio, il modello myModel aveva originariamente le colonne a, b e c, ma ora voglio aggiungere la colonna d.Rails: modifica di un modello generato da Scaffolding
risposta
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)
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
Confuso - perché hai fatto la domanda se avevi una buona risposta? Perché non postare questo nella domanda originale e chiedere soluzioni migliori? – zenazn
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. –
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. –
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.
aggiornerà anche le viste? – femi
No, non aggiornerà le viste. – cynicalman
Questa era la risposta accettata ma l'ho modificata a causa della nota nella risposta di NeoNMD riguardo a questa risposta. –
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
Grazie Wiseman, appena modificato per tenerne conto, è meglio? – BookOfGreg
Sì, perfetto, grazie :) – Wiseman