Gracias Luis.

Extraer las tareas desde el usuario fue algo que probé, pero se me complicó
cuando quise hacer eso mismo con una paginación. Los has_many y belogns_to
están todos. Como agregarías el current_usuario.horas en ese código que dejé
con el helper de paginación?

     @hora_pages, @horas = paginate :horas, :per_page => 10,
                  :joins => "inner join tareas on tareas.id =
horas.tarea_id",
                  :conditions => ["tareas.usuario_id = ?", current_usuario]

Anexo a este email un diagrama del modelo de datos para que se entienda algo
más lo que estoy haciendo.

Por otro lado... además de traer las tareas de un usuario, tengo que
aplicarles otro filtros a la consulta extras (como puede ser la fecha de
esas horas cargadas).
Como harías esto? Se puede hacer algo como agrego acá abajo?

current_usuario.horas :conditions => ["fecha = ?", DateTime::now]

Me parece que fui muy "creativo" con esta linea de código :)

Desde ya gracias de nuevo por la ayuda.
Lautaro.

On 5/17/07, Luis Lavena <[EMAIL PROTECTED]> wrote:

On 5/17/07, Lautaro Bonetto <[EMAIL PROTECTED]> wrote:
> Hola a todos de nuevo. Tengo una nueva consulta.
>
> Estoy armándome una pequeña aplicación web de carga de horas. En la
pantalla
> de carga quiero que cada usuario veo sólo las horas que él cargo.
Entonces
> aplico la siguiente condición en la paginación.
>
>       @hora_pages, @horas = paginate :horas, :per_page => 10,
>                     :joins => "inner join tareas on tareas.id =
> horas.tarea_id",
>                     :conditions => ["tareas.usuario_id = ?",
> current_usuario]
>
> Esto se debe a que los usuario están relacionados sólo con "tareas" y
estos
> usuarios cargar "horas" a estas tareas. Cada "tarea" esta asignada a un
> único usuario, por lo que todas las "hora" relacionadas a esta tarea son
de
> ese usuario. (Como que es difícil contarlo. Espero se entienda)
>

Si, algo, pero algo tambien se entiende.

> La cuestión es que tengo que mostrar a varios lados del sitio estas
horas y
> siempre debo agregar esta condición. Entonces pensé que quizás sea una
buena
> idea filtrar en el modelo "Hora" esta condición. De tal forma que cada
vez
> que haga un FIND ya le aplique el filtro y muestre sólo las del usuario
> logueado.
>
> O sea...
> @horas = Hora.find :all
> ya traiga las hora del "current_usuario" y no la de todos.
>

Aja, y por que no lo haces al reves?

@horas = current_usuario.horas

y en el modelo de Usuario especificas la condition en el has_many?

> Es posible esto? (Estoy pidiendo mucho?)
>  Como sería el código de éste filtro?
>

Ah, si escribo me va a salir cualquier cosa, estoy con el cerebro en
off...
a ver...

class User < AR
  has_many :hours, :though => :tasks
end

A ver... creo ahi esta:

class Task < AR
  belongs_to :user
  has_many :hours
end

class Hour < AR
  belongs_to :task
end

Que opinan ustedes?

--
Luis Lavena
Multimedia systems
-
Leaders are made, they are not born. They are made by hard effort,
which is the price which all of us must pay to achieve any goal that
is worthwhile.
Vince Lombardi
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar




--
Saludos, Lautaro Bonetto.
http://lautaro-bonetto.neurona.com

<<attachment: models.png>>

_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a