2011-01-29 48 views
5

Sé que puedo hacer un db: crear y crear tablas de base de datos o db: migrar a una nueva versión, sin embargo, lo que quiero hacer es importar el esquema de una base de datos existente (todas las tablas) y generar modelos para cada una.¿Tiene Ruby on Rails una forma de importar un esquema de base de datos existente?

¿ActiveRecord tiene la capacidad de hacer esto? ¡Gracias!

+1

No es difícil generar modelos a mano para tablas existentes/heredadas. Comience con un modelo simple y obtenga el nombre de la tabla, la clave principal y los nombres de campo creados. Ejecute la consola de Rail y genere un comando de búsqueda para el primer registro. Verá el SQL generado que le dará lo que necesita para ajustar el modelo. La mayoría de los nombres de campos de tablas heredadas se ejecutarán en las suposiciones de ActiveRecord, por lo que deberá corregirlos. Tuve que unir varias bases de datos para hacer esto y fue bastante rápido una vez que lo entendí. Sin embargo, no use migraciones: su DBA lo odiará si se vuelve deshonesto. –

+0

Excepto DO utilizar migraciones. La configuración de la base de datos es parte del proceso de implementación y usted debe usar migraciones con sus implementaciones para asegurarse de que su base de datos coincida con su aplicación. Los DBA deben participar en el diseño de sus tablas, pero no en el despliegue de su esquema. – xaxxon

Respuesta

3

No. ActiveRecord es un ORM, por lo que no tiene nada que ver con generar esquemas de base de datos o generar modelos. Rails tampoco tiene ningún concepto de hacer esto.

Tendrá que escribir las migraciones de la base de datos y hacer esto usted mismo.

1

Hay una especie de camino. Cree una nueva aplicación Rails 2.2 (no puede ser 2.3 o 3.0, la gema no se ha actualizado desde 2007). Luego instale y use la gema Magic Model Generator.

Esto analizará su base de datos existente y extra todos los modelos de ella, como magia. Dado que la estructura de los archivos básicos del modelo de ActiveRecord es bastante similar en Rails 3, puede copiarlos en su proyecto actual y modificarlos según sea necesario.

Cuestiones relacionadas