Ayuda para tomar la mejor decision

Hola a todos,

Estoy trabajando en una aplicacion donde la URL necesita empezar con el
group_id porque el usuario siempre tendra que navegar dentro de un
grupo, sus eventos y posts.

XXX Sex - Free Porn Videos at XXX.com
XXX Sex - Free Porn Videos at XXX.com

Mi pregunta es:

Cual es la mejor manera de separar los posts pertenecientes a un grupo
de los posts que un usuario en particular haya creado para ese grupo.

Ahora mismo utilizo el metodo index de posts para mostrar todos los
posts de un grupo pero ahora quiero mostrar todo los posts de un usuario
en ese grupo.

  1. Deberia crear un nuevo controlador?
  2. Una nueva accion en posts controller?
  3. Tal vez enviar un parametro extra a la accion index de posts para
    saber si debo filtrar por usuario del grupo o grupo en general.

Esas tres opciones las tengo en mente, cual seria le mejor, o hay alguna
otra mejor opcion?

Gracias,

Elias

Elias, cuando tengo este tipo de situación siempre opto por crear un
nuevo
controlador. Considero que es lo mas fácil, elegante y RESTful.

Esperemos que dice el resto de la lista.

Saludos desde Colombia,

Luis Hurtado.

El 11 de noviembre de 2008 15:07, Elias O. <
[email protected]> escribió:

Elias O. wrote:

Hola a todos,

Estoy trabajando en una aplicacion donde la URL necesita empezar con el
group_id porque el usuario siempre tendra que navegar dentro de un
grupo, sus eventos y posts.

XXX Sex - Free Porn Videos at XXX.com
XXX Sex - Free Porn Videos at XXX.com

Mi pregunta es:

Cual es la mejor manera de separar los posts pertenecientes a un grupo
de los posts que un usuario en particular haya creado para ese grupo.

Ahora mismo utilizo el metodo index de posts para mostrar todos los
posts de un grupo pero ahora quiero mostrar todo los posts de un usuario
en ese grupo.

  1. Deberia crear un nuevo controlador?
  2. Una nueva accion en posts controller?
  3. Tal vez enviar un parametro extra a la accion index de posts para
    saber si debo filtrar por usuario del grupo o grupo en general.

Esas tres opciones las tengo en mente, cual seria le mejor, o hay alguna
otra mejor opcion?

Gracias,

Elias

Si lo que vas a hacer es sacar una lista de posts en todo caso, no veo
razón para crear una nueva acción, y mucho menos otro controlador.
Simplemente, limítate a filtrar por usuario si es que recibes un
parámetro de usuario:

filtra_usr = params[:user_id] ? " AND user_id = #{params[:user_id]}" :
“”
@posts = Post.all(:conditions => “group_id = #{params[:group_id]}
#{filtra_usr}”)

o quizá no sea necesario filtrar por grupo si ya filtras por usuario:

@posts = Post.all(:conditions => params[:user_id] ? “user_id =
#{params[:user_id]}” : “group_id = #{params[:group_id]}”)

Es cuestión de filtrar en base a los parámetros que se reciban… todo
lo demás es igual.

s2

Hola Elias, tal vez algo asi te pueda servir:

http://pastie.org/312825

Saludos.

Ruben Davila wrote:

Hola Elias, tal vez algo asi te pueda servir:

http://pastie.org/312825

Saludos.

Eso es casi, casi, lo que yo proponía (y por supuesto me gusta). Pero
ojo, que se te ha colado un fallo… Elias dice que el grupo siempre
viene, y el usuario puede que sí o puede que no, así que si pones
primero el if params[:group_id] siempre te entrará por ahí. Primero hay
que mirar el usuario, que es más restrictivo, y si no viene el usuario
es cuando miramos el grupo:

if params[:user_id]
@posts = User.find(params[:user_id]).posts
elsif params[:group_id]
@posts = Group.find(params[:group_id]).posts

Respecto a la solución de Luis Felipe, y suponiendo que es todo igual
menos el filtrado de registros, crear diferentes controladores me parece
un atentado al principio DRY y no le veo absolutamente ninguna ventaja a
repetir casi todo dos veces.

s2

Hola,

Muchas gracias a todos por su ayuda. Definitivamente me iré por lo
descrito en:

http://pastie.org/312825

Y si es necesario enviaré mas parámteros para filtrar al final del URL.

Gracias nuevamente,

Elías

El 11 de noviembre de 2008 18:29, Fernando C. <
[email protected]> escribió:

Mi pregunta es:
3) Tal vez enviar un parametro extra a la accion index de posts para
razón para crear una nueva acción, y mucho menos otro controlador.
@posts = Post.all(:conditions => params[:user_id] ? "user_id =
[email protected]
http://lists.simplelogica.net/mailman/listinfo/ror-es

Difiero de la solución propuesta por Fernando… desde mi punto de vista
es
mucho mejor crear diferentes controladores, digamos GroupPosts para los
posts en un grupo; GroupUserPosts para los posts de un usuario en un
grupo
e incluso UserPosts para todos los posts de un usuario en caso que se
necesiten. En este último caso siguiendo la solución de Fernando
tendríamos
que incluir mas código en el controlador para filtrar por parámetros que
poco a poco puede hacer el código mas complejo.

Además aunque considero que Fernando lo escribe por cuestiones de hacer
mas
sencillo el código, ese código SQL en los controladores como que no me
termina de gustar.

Saludos desde Colombia!,

Luis Hurtado.