Class: Triggerable::Conditions::PredicateCondition

Inherits:
Condition
  • Object
show all
Defined in:
lib/triggerable/conditions/predicate/predicate_condition.rb

Direct Known Subclasses

And, Or

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods inherited from Condition

build, #true_for?

Constructor Details

#initialize(conditions) ⇒ PredicateCondition

Returns a new instance of PredicateCondition.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/triggerable/conditions/predicate/predicate_condition.rb', line 6

def initialize conditions
  @conditions = conditions.map do |condition|
    unless condition.is_a?(Hash)
      condition
    else
      field     = condition.keys.first
      statement = condition.values.first

      Condition.build({field => statement})
    end
  end
end

Instance Attribute Details

#conditionsObject

Returns the value of attribute conditions.



4
5
6
# File 'lib/triggerable/conditions/predicate/predicate_condition.rb', line 4

def conditions
  @conditions
end

Instance Method Details

#scope(table) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
# File 'lib/triggerable/conditions/predicate/predicate_condition.rb', line 19

def scope table
  predicate_scope = nil

  @conditions.each_with_index do |condition, index|
    condition_scope = condition.scope(table)

    predicate_scope = if index.zero?
      condition_scope
    else
      predicate_scope.send(predicate_name, condition_scope)
    end
  end

  predicate_scope
end