¿Cuando usar nested routes? ¿Combinar REST con no-REST?


#1

Veamos, a mitad de proyecto me ha surgido la siguiente duda:

Tengo por ahora estos modelos:

Usuario, Club, Jugador, División, etc…

Y las relaciones de la base datos son tal que así:

Usuario 1…(0,1) Club
Club (0,1)…N Jugador
Division 1…N Club

Y bien, he estado diseñando la aplicación para tener las siguientes
rutas REST:

map.resource :usuario, :has_one => :jugador
map.resource :division :has_many => :clubes
map.resource :club, :has_many => :jugadores
map.resource :usuario
map.resource :jugadores

He modificado mi controlador jugadores para que sepa cuando accedemos
por la ruta /clubs/1/jugadores/ y cuando con la ruta /jugadores, así
como la vista, así como con division y con usuarios.

Mi duda es si realmente estoy modelando bien mi aplicación ya que no me
convence el tener vistas y controladores comunes para funcionalidades
distintas debido a que estoy filtrando información.

Otra duda que tengo es: ¿Es conveniente mezclar rutas REST con no-REST?
Por ejemplo, estaba pensando en incluir una acción a jugadores que me
mostrara cuales son los jugadores libres del mercado, ¿Debería crearme
un controlador nuevo llamado JugadoresLibres que tuviera las acciones
CRUD necesarias (una copia prácticamente de mi actual controlador
jugadores) que no fuera REST? ¿O podría tener ese nuevo controlador
mapeado como un recurso REST? ¿Cuál opción veríais mas correcta?


#2

Solo me voy a meter en el tema de mezclar rest o no-rest.

Cuando usas rutas rests no estás limitado al CRUD, puedes indicarle
otras
acciones de tu controlador facilmente.

map.resources :jugadores, :collection => { :libres => :get}

2008/11/20 Carlos Belizón removed_email_address@domain.invalid


#3

Ceritium wrote:

Solo me voy a meter en el tema de mezclar rest o no-rest.

Cuando usas rutas rests no estás limitado al CRUD, puedes indicarle
otras
acciones de tu controlador facilmente.

map.resources :jugadores, :collection => { :libres => :get}

2008/11/20 Carlos Belizón removed_email_address@domain.invalid

Si, ya he estado leyendo este enlace:

http://guides.rubyonrails.org/routing_outside_in.html

Pero mi pregunta va más encaminada en si debo de intentar que todas la
acciones de mi aplicación respondan al patrón REST o no. Es más una
cuestión de intentar saber cuál sería una buena praxis.


#4

Ok, yo por ejemplo suelo usar casi siempre rest, pero a veces, por
ejemplo,
he tenido una acción que se “repite” en varios controladores, (esto
sucedía
porque en realidad la acción estaba en un plugin, de autocompletado o de
edicion insitu creo que era, quizás los dos).

Entonces no me merece la pena llenar el routes con eso, que solo lo
haría
más feo.

Creo que lo ideal es seguir la convención y como se dijo en la
conferencia
rails, solo dejar de seguirla si lo puedes justificar. Si quieres
rematarlo
ya, asegurate de que no puedes hacerlo de otra manera siguiendo la
convención.

2008/11/20 Carlos Belizón removed_email_address@domain.invalid