2010-04-04 54 views
12

Soy nuevo en Ruby on Rails, y estoy tratando de crear un tutor de guitarra baja para aprender RoR (y el bajo). Los recorridos utilizan Scaffold para crear clases ActiveRecord, pero parecen corresponder a tablas independientes; no hay uso de belongs_to o has_many.¿Cómo creo relaciones de muchos a uno usando Scaffold?

Me gustaría crear tres clases: Scale, GuitarString y Fret. Cada Escala tiene muchas GuitarStrings, cada una con muchos Frets.

¿Cómo creo clases con esta relación usando Scaffold? ¿Hay alguna manera de hacerlo de una sola vez, o necesito crearlos en un estado no relacionado usando Scaffold, y luego agregar las relaciones a mano? ¿O debería abandonar Andamios por completo?

+0

posible duplicado de http://stackoverflow.com/questions/502119/rails-scaffold-to-automatically-do-one-to- many -relationship – hobodave

+0

@hobodave: silimar, sí. Él pregunta "¿se puede hacer?" Y le pregunto "¿es esta la manera de hacerlo, si no, cómo?" – Simon

+0

Es posible que desee comprobar la edición en mi respuesta. –

Respuesta

16

Empecé a aprender Ruby on Rails hace unas semanas, y me resultó mucho más fácil familiarizarme con las cosas y aprender a andar sin utilizar andamios, y generar las diversas partes desde la línea de comando (o macros en un IDE).

Sin embargo, por lo que puedo decir, cuando utiliza andamios para generar cosas, lo considera como generar un "recurso", por lo que solo va a crear un recurso a la vez, luego agrega las relaciones a mano más tarde.

Sin embargo, el comando generar modelo puede crear estas relaciones para usted. Digamos que usaste andamios para crear un recurso de Escala.

A continuación, podría hacer

ruby script/generate model GuitarString name:string scale:references 

La escala: referencias crearán un belongs_to :scale del modelo de GuitarString, pero tendrá que añadir has_many: guitarstrings a su maqueta.

El comando generar modelo también crea un script de migración para usted y otros archivos necesarios (accesorios), similar al andamiaje, pero no autocrea vistas o controladores ni nada.

EDIT:

Esta es generalmente la forma en que se va a querer hacer las cosas - utilizar el generar/modelo o generar/o Generar vista/controlador o generar/migración. La mayoría de los desarrolladores de Rails no usan andamios, ya que su "talla única" rara vez se adapta perfectamente a las cosas. Sin embargo, la mayoría de los desarrolladores de rieles usan los comandos de generación que mencioné, ahorra tiempo al crear ayudantes y accesorios a mano, y le da a cada archivo que genera una plantilla básica que puede agregar.

Varios IDE de Ruby como RubyMine de JetBrain tienen macros que básicamente realizan estos comandos. En RubyMine puede hacer ctrl + alt + g, luego ingrese otra tecla correspondiente a lo que desea generar.

La relación belongs_to se puede generar utilizando la palabra "referencias", como mencioné. Otros los agregará a mano.

Cuestiones relacionadas