Вопрос

Я ищу простой способ позволить пользователям определять набор правил для фильтрации объектов.

Например.пусть они определят что-то вроде "уведомить меня о бронировании, если дата бронирования < 2009/04/30 И значение > 100,00"

Более или менее:Я бы хотел иметь движок Ruby rules engine с пользовательским DSL.

Есть ли библиотека, предлагающая это?Наткнулся на Ruleby, но он пока не поддерживает пользовательский DSL.

Каков наилучший способ для этого?

Это было полезно?

Решение

Взгляните на Верхушка дерева.Вы можете определить свой DSL как грамматику синтаксического выражения, а затем проанализировать его, чтобы создать свои правила в любом формате, который вам нравится.

Другие советы

Взгляните на вонги-двигатель gem это новый движок правил, основанный на алгоритме Rete, который в последнее время привлекает к себе изрядное внимание.

Я не знаю точно, как и на каких объектах должны оцениваться эти правила, но если это модели ActiveRecord, возможно Честолюбие это был бы правильный путь.Это позволяет вам написать условия на ruby, что-то вроде:

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

Это преобразуется в SQL, и вы получите всех пользователей, удовлетворяющих заданным критериям

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top