2011-01-29 7 views
5

So di poter eseguire un db: creare e creare tabelle di database o db: migrare a una nuova versione, tuttavia quello che voglio fare è importare lo schema da un database esistente (tutte le tabelle) e generare modelli per ognuno.Ruby on Rails ha un modo per importare uno schema di database esistente?

ActiveRecord è in grado di eseguire questa operazione? Grazie!

+1

Non è difficile generare modelli manualmente per tabelle esistenti/legacy. Inizia con un modello semplice e ottieni il tablename, la chiave primaria e i nomi dei campi creati. Esegui la console di Rail e genera un comando di ricerca per il primo record. Vedrai l'SQL generato che ti darà quello che ti serve per mettere a punto il modello. La maggior parte dei nomi dei campi della tabella legacy verrà eseguita secondo le ipotesi di ActiveRecord, quindi dovrai correggerla. Ho dovuto legare diversi database facendo questo ed è andato abbastanza veloce una volta capito. Tuttavia, non utilizzare le migrazioni: il tuo DBA ti odierà se si diventa canaglia. –

+0

Fatta eccezione per le migrazioni. La configurazione del database fa parte del processo di distribuzione e dovresti utilizzare le migrazioni con le distribuzioni per assicurarti che il tuo database corrisponda alla tua applicazione. Gli amministratori di database dovrebbero essere coinvolti nella progettazione delle tabelle, ma non nella distribuzione dello schema. – xaxxon

risposta

3

No. ActiveRecord è un ORM, quindi non ha nulla a che fare con la generazione di schemi di database o la generazione di modelli. Rails non ha alcun concetto di fare questo, neanche.

Dovrai scrivere le migrazioni del database e farlo da solo.

1

C'è un modo. Crea una nuova app Rails 2.2 (non può essere 2.3 o 3.0, la gemma non è stata aggiornata dal 2007). Quindi installare e utilizzare la gemma Magic Model Generator.

Questo analizzerà il database esistente e aggiungerà tutti i modelli da esso, come per magia. Poiché la struttura dei file di modello ActiveRecord di base è piuttosto simile in Rails 3, è sufficiente copiarli nel progetto corrente e modificarli se necessario.