Pregunta

Estoy buscando una forma sencilla de permitir que los usuarios definan un conjunto de reglas para filtrar objetos.

Por ej. Permítales que definan algo como " notificarme sobre una reserva si la fecha de reserva < 30/04/2009 Y valor > 100.00 "

Más o menos: me gustaría tener un motor de reglas de Ruby con DSL personalizado.

¿Hay una biblioteca que ofrece eso? Encontré Ruleby, pero aún no es compatible con DSL personalizado.

¿Cuál es el mejor apporach para hacer eso?

¿Fue útil?

Solución

Echa un vistazo a Treetop . Puede definir su DSL como una gramática de expresión de análisis y luego analizarla para crear sus reglas en el formato que desee.

Otros consejos

Eche un vistazo a la gema wongi-engine , es un nuevo motor de reglas basado en el Algoritmo de Rete que está captando un poco de atención últimamente.

No sé exactamente cómo y sobre qué objetos deberían evaluarse estas reglas, pero si se trata de modelos ActiveRecord, tal vez La ambición sería el camino a seguir. Te permite escribir condiciones en ruby, algo como:

User.select { |m| m.name == 'jon' && m.age == 21 }

Esto se convierte a SQL y obtendrás a todos los usuarios que cumplan con los criterios dados

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top