Rest y relación 1 a 1 y 1 a N

Buenas. Hace muy poco que me he metido en la programación con Rails.
Estoy desarrollando una aplicación en la que quiero que haya un
controlador Usuarios, otro Voluntarios y otro Turnos. En la
aplicación, cada usuario tendrá asignado un voluntario y cada
voluntario varios turnos. El problema es que no he conseguido entender
correctamente la forma con la que podemos relacionar los diversos
modelos. Es decir, como indico en Rails que cada usuario debe tener
asignado un voluntario?

La idea es que al ejecutar la accion create del controlador Usuarios,
se cree el nuevo usuario y además cree un nuevo voluntario
inicializando sus atributos a un valor por defecto.¿ Como se puede
hacer todo esto en Rails y con Rest?

Sé que lo que he preguntado es bastante generico, pero no he sido
capaz de entender como relacionar varios controladores entre sí.
Muchas gracias, y espero vuestra ayuda.

El día 12/03/08, Daniel [email protected] escribió:

Sé que lo que he preguntado es bastante generico, pero no he sido
capaz de entender como relacionar varios controladores entre sí.
Muchas gracias, y espero vuestra ayuda.

Hola Daniel, lo que se relaciona entre sí son los modelos, no los
controladores:

usuario has_one :voluntario
voluntario has_many :turnos

Por otro lado decide, para cada modelo, si necesitas o no un interfaz
web
propio. Por ejemplo, para usuarios… necesitarás listados y formularios
para crearlos, así que necesitas un interfaz, o sea que lo mejor es
generarlos con un scaffold que te crea el modelo, vista y controlador
entre
otras cosas:

script/generate scaffold Usuario nombre:string apellidos:string

Para voluntarios, similar pero además tendrás que añadir un campo para
relacionar con el usuario que le corresponda:

script/generate scaffold Voluntario nombre:string apellidos:string
usuario_id:integer

Los turnos, supongo que también precisan de un interfaz web, así que
otro
scaffold:

script/generate scaffold Turno nombre:string horario:string
voluntario_id:integer

esto último, si es 1 a N de voluntarios a turnos… si es de N a N,
necesitarás una tabla intermedia…

Así es como va y por ahora no hemos tenido que hablar nada de REST…

El Miércoles, 12 de Marzo de 2008, Daniel
escribió:> Buenas. Hace muy poco que me he metido en la programación con Rails.

Estoy desarrollando una aplicación en la que quiero que haya un
controlador Usuarios, otro Voluntarios y otro Turnos. En la
aplicación, cada usuario tendrá asignado un voluntario y cada
voluntario varios turnos. El problema es que no he conseguido entender
correctamente la forma con la que podemos relacionar los diversos
modelos.

Hablas de modelos pero al principio de controladores. Aclaremos que lo
que te
interesa es la relación entre modelos.

Es decir, como indico en Rails que cada usuario debe tener
asignado un voluntario?

En la definición del modelo “usuario” añade:

has_one :voluntario

(o algo así).

Y como cada voluntario tiene varios turnos, en la definicion del
modelo “voluntario”:

has_many :turno

Es algo así pero no recuerdo bien la nomenclatura. Revisa el API de
RubyOnRails (los métodos del ActiveRecord y tal).

Saludos.