Class: WhereRow::QueryBuilder
- Inherits:
-
Object
- Object
- WhereRow::QueryBuilder
- Defined in:
- lib/where_row/query_builder.rb
Instance Method Summary collapse
- #build ⇒ Object
-
#initialize(relation, keys, operator, values) ⇒ QueryBuilder
constructor
A new instance of QueryBuilder.
Constructor Details
#initialize(relation, keys, operator, values) ⇒ QueryBuilder
Returns a new instance of QueryBuilder.
3 4 5 6 7 8 |
# File 'lib/where_row/query_builder.rb', line 3 def initialize(relation, keys, operator, values) @relation = relation @keys = keys.map(&:to_s) @operator = operator @values = values end |
Instance Method Details
#build ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/where_row/query_builder.rb', line 21 def build return relation if keys.blank? case operator when :eq validate_single(values) relation.where(keys.zip(values).to_h) when :not_eq validate_single(values) build_not_eq_clause(relation, keys.zip(values)) when :in validate_multiple(values) build_in_clause when :not_in validate_multiple(values) build_not_in_clause when *COMPARISON_OPERATORS validate_single(values) build_comparison_clause else raise ArgumentError, 'Invalid operator' end end |