2009-05-04 31 views
15

Tôi đang tìm một cách đơn giản để cho phép người dùng xác định một bộ quy tắc để lọc các đối tượng.Động cơ Ruby & Quy tắc

Ví dụ: cho phép họ xác định điều gì đó như "thông báo cho tôi về đặt phòng nếu ngày đặt phòng < 2009/04/30 VÀ giá trị> 100.00"

Ít hơn: Tôi muốn có công cụ quy tắc Ruby có tùy chỉnh DSL.

Có thư viện nào cung cấp thư viện đó không? Đã qua Ruleby, nhưng nó chưa hỗ trợ DSL tùy chỉnh.

Apporach tốt nhất để làm điều đó là gì?

Trả lời

2

Hãy xem Treetop. Bạn có thể xác định DSL của bạn như là một ngữ pháp phân tích cú pháp và sau đó phân tích nó để tạo ra các quy tắc của bạn trong bất cứ định dạng nào bạn thích.

+1

Xin chào cảm ơn câu trả lời. Treetop thực sự trông giống như một giải pháp. Bạn có liên kết nào cho bất kỳ trang web thực tiễn tốt nhất nào không? Khó tìm được thứ tốt trên mạng. Tôi đã suy nghĩ về các phương pháp sau đây: - Hãy để người dùng xác định quy tắc của họ - Phân tích những bằng treetop - Tạo mã Ruby dựa trên những quy tắc - ăn này vào Ruleby - lọc đối tượng của tôi sử dụng công cụ quy tắc Liệu mà âm thanh quá freaky? – Matt

+0

Thật không may là tôi cũng không có nhiều may mắn khi tìm kiếm tài nguyên trên Treetop. Nhưng giải pháp của bạn có vẻ giống như cách tiếp cận đúng. May mắn nhất! –

1

Tôi không biết chính xác cách thức và nội dung những quy tắc này nên được đánh giá như thế nào, nhưng nếu đây là các mô hình ActiveRecord có thể Ambition sẽ là cách để thực hiện. Nó cho phép bạn viết điều kiện trong ruby, một cái gì đó như:

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

này được chuyển đổi sang SQL và bạn sẽ nhận được tất cả người dùng đáp ứng các tiêu chí được đưa

+0

Có vẻ đẹp nhưng không còn được duy trì nữa. – pisaruk

4

Có một cái nhìn tại wongi-engine viên ngọc đó là một quy định mới dựa trên thuật toán Rete đang thu thập một chút chú ý công bằng gần đây.