Custom Ransack Matcher
Ransack hay ActiveRecord sử dụng abstract syntax tree (AST) để compose query thay vì build query trực tiếp. AST sẽ bao gồm các node (Arel::Nodes::Node) chứa thông tin để tạo thành từng SQL fragment. Mỗi node được tạo nên bởi hai thành phần chính là attribute và predicate. Hiểu được điều này, chúng ta có thể chuyển hầu hết các case sử dụng query thuần sang AST thông qua việc định nghĩa các node tương ứng.