我正在寻找一种简单的方法来让用户定义一组规则来过滤对象。
例如。让他们定义类似“如果预订日期 < 2009/04/30 且价值 > 100.00 时通知我预订”
或多或少:我想要一个带有自定义 DSL 的 Ruby 规则引擎。
有图书馆提供吗?遇到了 Ruleby,但它还不支持自定义 DSL。
最好的方法是什么?
我正在寻找一种简单的方法来让用户定义一组规则来过滤对象。
例如。让他们定义类似“如果预订日期 < 2009/04/30 且价值 > 100.00 时通知我预订”
或多或少:我想要一个带有自定义 DSL 的 Ruby 规则引擎。
有图书馆提供吗?遇到了 Ruleby,但它还不支持自定义 DSL。
最好的方法是什么?
看看wongi-engine gem,它是一个基于 Rete 算法的新规则引擎,最近引起了相当多的关注。
看看树顶。您可以将您的 DSL 定义为解析表达式语法,然后对其进行解析以创建您喜欢的任何格式的规则。
我不确切知道应该如何以及在哪些对象上评估这些规则,但如果这些是 ActiveRecord 模型,那么Ambition可能是可行的方法。它可以让你用 ruby 编写条件,例如:
User.select { |m| m.name == 'jon' && m.age == 21 }
这将转换为 SQL,您将获得满足给定条件的所有用户