2009-05-04 33 views
15

我正在尋找一種讓用戶定義一組規則來過濾對象的簡單方法。Ruby&Rules引擎

例如,讓他們定義像「如果預訂日期通知我< 2009/04/30和值> 100.00」

或多或少:我想要一個具有自定義DSL的Ruby規則引擎。

有沒有圖書館提供的?遇到Ruleby,但它不支持自定義DSL。

這樣做最好的應用是什麼?

回答

2

看看Treetop。您可以將您的DSL定義爲解析表達語法,然後解析它以您喜歡的任何格式創建您的規則。

+1

嗨 謝謝你的回答。 Treetop看起來像一個解決方案。 您是否有任何最佳實踐網站的鏈接?很難在網上找到好東西。 我在想下面的辦法: - 讓用戶定義他們的規則 - 解析這些使用樹頂 - 創建基於這些規則 Ruby代碼 - 喂到這些Ruleby - 使用規則引擎來篩選對象 不這聽起來太怪異了? – Matt 2009-05-06 07:32:32

+0

不幸的是,我沒有多少運氣在Treetop上尋找資源。但你的解決方案聽起來像是正確的方法。祝你好運! – 2009-05-09 19:15:35

1

我不知道這些規則應該如何以及在什麼對象上進行評估,但是如果這些是ActiveRecord模型,那麼Ambition可能會走。它讓你寫條件,紅寶石,是這樣的:

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

這被轉換爲SQL,你會得到所有用戶滿足給定的標準

4

看一看在wongi-engine寶石它是一個新的規則基於Rete算法的引擎最近引起了一些關注。