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

Responder a