Hola,
algo que se me ocurre es, complementando las respuestas del resto, te fijes
en la implementación del method_missing de active records. Lo que tenes que
hacer vos es muy parecido al find_by_ de ActiveRecords, y la forma que lo
resuelve es reimplementando justamente method_missing.

Saludos

Mis dos centavitos

Diego


2008/5/29 Esteban Fornal <[EMAIL PROTECTED]>:

> fijate method_missing
>
> tenes cosas como:
>
> def method_missing(method, *args)
>  if find = method.to_s.match(/^has_(\w*)\?$/)
>
> ...
>
> 2008/5/29 Lautaro Bonetto <[EMAIL PROTECTED]>:
> > Hola a todos.
> >
> > Necesito hacerles una consulta.
> > Tengo un sistema en Rails y necesito agregar a un módulos varios métodos
> que
> > difieren entre sí sólo en un número. Quiero tratar de evitarme tener que
> > escribirlos a todos.
> > Existe alguna forma de "programar la programación"? Traté de hacerlo con
> > EVAL, pero no me funcionó. Quizás lo hice mal.
> >
> > Ejemplo: Dos de los métodos son similares a estos:
> >
> > def tarea0_sum
> >   tot = 0
> >   subtareas.each do |st|
> >     tot += st.tarea0
> >   end
> >   return tot
> > end
> >
> > def tarea1_sum
> >   tot = 0
> >   subtareas.each do |st|
> >     tot += st.tarea1
> >   end
> >   return tot
> > end
> >
> > Tengo que escribir esta función "tareaXX_sum" 20 veces, y lo único que
> varía
> > es la parte de "tarea0" por "tarea1", "tarea2", "tarea3"... y así hasta
> > "tarea20".
> >
> > Hay alguna forma de evitarme tipear todos los métodos en el modelo?
> >
> > Desde ya muchas gracias por la ayuda.
> >
> > --
> > Lautaro Bonetto
> > http://lautaro-bonetto.neurona.com
> > _______________________________________________
> > Ruby mailing list
> > [email protected]
> > http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
> >
> >
> _______________________________________________
> Ruby mailing list
> [email protected]
> http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
>



-- 
Diego Torres
LIFIA - Laboratorio de Investigación y Formación en Informática Avanzada
Facultad de Informática - Universidad Nacional de La Plata
Calles 50 y 115 La Plata - 1900 Argentina
Phone: +54 221 4228252 Ext: 220
Personal Web Page: http://www.lifia.info.unlp.edu.ar/en/dtorres.htm
e-mail: [EMAIL PROTECTED]
_______________________________________________
Ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar

Responder a