Class: Parelation::Criteria::Where

Inherits:
Object
  • Object
show all
Includes:
Parelation::Criteria
Defined in:
lib/parelation/criteria/where.rb

Defined Under Namespace

Classes: Caster, CriteriaBuilder, DirectionalQueryApplier

Instance Attribute Summary

Attributes included from Parelation::Criteria

#chain, #param, #value

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Parelation::Criteria

#initialize

Class Method Details

.match?(param) ⇒ true, false

Parameters:

  • param (String)

Returns:

  • (true, false)


11
12
13
# File 'lib/parelation/criteria/where.rb', line 11

def self.match?(param)
  !!(param =~ /^(where|where_(not|gt|gte|lt|lte))$/)
end

Instance Method Details

#callActiveRecord::Relation

Returns:

  • (ActiveRecord::Relation)


17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/parelation/criteria/where.rb', line 17

def call
  criteria.inject(chain) do |chain, (field, value)|
    case param
    when "where"
      chain.where(field => value)
    when "where_not"
      chain.where.not(field => value)
    when "where_gt", "where_gte", "where_lt", "where_lte"
      DirectionalQueryApplier.new(param, criteria, chain).apply
    end
  end
end