Class: Dbee::Providers::ActiveRecordProvider::ExpressionBuilder::WhereMaker

Inherits:
Object
  • Object
show all
Includes:
Singleton
Defined in:
lib/dbee/providers/active_record_provider/expression_builder/where_maker.rb

Overview

Derives Arel#where predicates.

Instance Method Summary collapse

Instance Method Details

#make(filter, arel_column) ⇒ Object



33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/dbee/providers/active_record_provider/expression_builder/where_maker.rb', line 33

def make(filter, arel_column)
  predicates = normalize(filter.value).map do |coerced_value|
    method = FILTER_EVALUATORS[filter.class]

    raise ArgumentError, "cannot compile filter: #{filter}" unless method

    method.call(arel_column, coerced_value)
  end

  predicates.inject(predicates.shift) do |memo, predicate|
    memo.or(predicate)
  end
end