2010-11-07 10 views
17

He configurado mi database.yml para apuntar a mi base de datos MySQL existentecarriles 3: cómo generar modelos de tablas de bases de

cómo puedo generar modelos de lo existente?

rails generate model existing_table_name 

sólo da un modelo de emty ..

+0

le da un modelo vacío? ¿Qué significa eso? ¿Que estás tratando de hacer? :) – s84

+0

esperaba que contenga todos los campos y relaciones de esa tabla, pero todo lo que obtengo es una clase vacía que deriva de ActiveRecord :: Base –

+0

lo que estás haciendo no es posible a menos que crees tus propios scripts. – s84

Respuesta

9

modelo A Rieles no muestra sus campos, pero todavía se puede utilizar. Prueba lo siguiente. Asumiendo que tiene un modelo llamado ModelName y un campo llamado "Nombre", el fuego de la consola de Rails y tipo:

ModelName.find_by_name('foo') 

Dado un nombre que existe en la base de datos, usted debe ver resultados.

Sin embargo, Rails no deduce relaciones, pero si su base de datos sigue las convenciones de Rails, se agregan fácilmente.

actualización

me he dado cuenta de esta falta particular de lo explícito ("mágica") es una fuente de confusión para los principiantes a los rieles. Siempre puede mirar en schema.rb para ver los modelos y todos los campos en un solo lugar. Además, si prefiere ver el esquema para cada modelo en el archivo de modelo, puede usar la gema annotate_models, que colocará el esquema db en un comentario en la parte superior del archivo del modelo.

+0

¡Guau, gracias, nunca supe que esto podría suceder! ehhe. Aprendo algo nuevo hoy. –

+0

Los modelos de rieles generados muestran sus campos en la llamada attr_accessible. – holaSenor

1

ActiveRecord no analiza una definición de esquema. Le pide al DBM las definiciones de tabla y calcula los campos sobre la marcha.

Tener el esquema es útil si va a modificar las tablas mediante migraciones. Schema Dumping and You lo ayudará a volcarlo para utilizarlo como referencia para crear migraciones.

ActiveRecord hace algunas suposiciones sobre la denominación de la tabla y espera que un campo id sea la clave principal con un número secuencial como tipo. Tener las migraciones lo ayudaría a refactorizar las tablas y/o nombres de campo y tipos, pero puede hacer esas mismas cosas a través de la línea de comandos de su DBM. En realidad, no es necesario seguir el estilo de ActiveRecord, pero esto ayuda a evitar errores extraños y permite que AR infiera cosas para facilitarle la vida.

1

podría intentar Magic Model Generator

+1

Nota: Is for Rails 2, no Rails 3 disponible. –

+3

¿Alguien sabe de algún método alternativo que genere modelos con relaciones, etc. a partir del esquema existente en Rails 3? – Arosboro

15

Usted puede tratar de Rmre. Puede crear modelos para el esquema existente e intenta crear todas las relaciones basadas en información de claves externas.

+0

Probé Rmre pero creó solo las relaciones entre los modelos (por ejemplo, has_many, belongs_to). No creó los atributos del modelo. – Nick

3

Su respuesta es:

$ rake db:schema:dump 

que establecerá un nuevo db/schema.db para crear un esquema de su base de datos.

Cuestiones relacionadas