REST en relaciones que no son 1 a n

Hola

He estado leyendo y viendo ejemplos sobre REST, me ha quedado claro
que se consiguen app mas estándares, rutas mas “claras”, etc… pero
lo que no he visto en ningún ejemplo es como usar REST en relaciones
que no son 1 a n, en el resto de relaciones no se puede usar REST?

me podéis arrojar un poco de luz sobre el tema de REST con el resto
de relaciones.

Gracias.
Un saludo.

¿Se entiende?

Perfectamente. Muchas gracias por la explicación, muy completa.

Un saludo.

El Wednesday 14 March 2007 00:07:22 alarkspur
escribió:> Hola

He estado leyendo y viendo ejemplos sobre REST, me ha quedado claro
que se consiguen app mas estándares, rutas mas “claras”, etc… pero
lo que no he visto en ningún ejemplo es como usar REST en relaciones
que no son 1 a n, en el resto de relaciones no se puede usar REST?

me podéis arrojar un poco de luz sobre el tema de REST con el resto
de relaciones.

Por lo general, las relaciones n-n en este tipo de caso se consideran
modelos
(clases) de nuestro dominio. Para explicarlo, me gusta mucho un ejemplo
que
pone Heinemeier: tenemos una aplicación con usuarios y grupos (con una
relación n-n). Esta claro que tendremos un controlador para
crear/editar/eliminar usuarios y otro para los grupos. ¿Ok?

¿Pero en qué controlador pongo las operaciones para asignar usuarios a
grupos?
En cualquier caso, ya me estaré “cargando” el enfoque REST. Así que la
solución propuesta por DHH es considerar la relación de pertenencia un modelo
en sí mismo:

class Pertenencia < ActiveRecord::Base
belongs_to :usuario
belongs_to :grupo
end

class Usuario < ActiveRecord::Base
has_many :pertenencias
has_many :grupos, :through => :pertenencias
end

class Grupo < ActiveRecord::Base
has_many :pertenencias
has_many :usuarios, :through => :pertenencias
end

Y para terminar, implementas un controlador (PertenenciaController) que
permita crear/editar/eliminar “pertenencias”.

¿Se entiende?

Saludos.


Imobach González Sosa
correo-e: imobachgs en banot punto net
jabber id: osoh en jabberes punto org
web: banot.net
blog: http://devnull.blogs.banot.net/