2010/4/7 Porta ☢ <[email protected]> > 2010/4/7 NachoKB <[email protected]> > >> ¿necesitás tal flexibilidad realmente? Si sólo tenés un conjunto acotado >> de "tipos" de Requerimiento lo podés hacer con STI (Single Table >> Inheritance) >> >> class TienePalabras < Requerimiento; end >> >> si esta forma no te sirve, siempre podés tener una columna TEXT que >> contenga código Ruby y lo evalúes (pasandole la instancia de nota y >> proveedor se me ocurre)... >> >> > Esto es lo que estaba pensando, pero no tengo en claro como implementarlo. > Vengo de perl y en ese caso hubiera tirado un eval a lo macho sin pensarlo > siquiera. Pero (imagino que, es una idea mia sin fundamento) en ruby podria > haber alguna herramienta mas para hacerlo un poco mas prolijo. >
la forma "más prolija" que se me ocurre es armarte una serie de "comandos" (subclases de Requerimiento, incluso podés usar alguna que componga otros requerimientos con un AND o con un OR) y utilizar esos comandos para construir tus restricciones > pero me da la impresión de que es más engorroso para el usuario (¡necesita >> saber Ruby!) y potencialmente peligroso; además si en realidad existen dos >> "tipos" de requerimientos pobre usuario le hacés retipear el mismo código >> una y otra vez... >> > > En este caso, el usuario soy yo. Lo que quiero evitar es que cada > requerimiento nuevo que aparece, tener que tocar codigo en la aplicacion. > Ademas, hay un segundo nivel de usuario que va a tildar checkboxes para > determinar que requerimientos tiene una Nota determinada para mandar a un > Proveedor X. Es por eso que pense en tirar los Requerimientos en una tabla. > De modo que cuando el usuario manda a procesar una Nota, se agarran todos > los Requerimientos tildados, y se corre el codigo de cada requerimiento > sobre la Nota elegida. > > Si esto se hace con un eval, entonces lo saco con fritas. > si, tiene eval :P > Se que en ruby hay Procs, lambdas y otras yerbas. > Procs y lambdas no son serializables. Además, a fin de cuentas sería lo mismo. > Sospecho que se pueden usar para resolver el tema que tengo, pero > honestamente no tengo en claro ni que son, ni como se usan ni si me sirven > para este caso en particular. > En este caso particular, no veo que te sirvan. ¿Pensaste las implicancias de seguridad que trae este approach? (metepúa) nachokb
_______________________________________________ Ruby mailing list [email protected] http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
