class Triggerable::Conditions::PredicateCondition

Attributes

conditions[RW]

Public Class Methods

new(conditions) click to toggle source
# 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

Public Instance Methods

scope(table) click to toggle source
# 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

Protected Instance Methods

predicate_name() click to toggle source
# File lib/triggerable/conditions/predicate/predicate_condition.rb, line 37
def predicate_name
  self.class.name.demodulize.downcase
end
true_conditions(object) click to toggle source
# File lib/triggerable/conditions/predicate/predicate_condition.rb, line 41
def true_conditions object
  @conditions.select do |c|
    c.is_a?(Symbol) ? object.send(c) : c.true_for?(object)
  end
end