Class: ActiveAny::Relation::Merger

Inherits:
Object
  • Object
show all
Defined in:
lib/active_any/relation/merger.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(relation, other) ⇒ Merger

Returns a new instance of Merger.



29
30
31
32
33
# File 'lib/active_any/relation/merger.rb', line 29

def initialize(relation, other)
  @relation = relation
  @values   = other.values
  @other    = other
end

Instance Attribute Details

#otherObject (readonly)

Returns the value of attribute other.



27
28
29
# File 'lib/active_any/relation/merger.rb', line 27

def other
  @other
end

#relationObject (readonly)

Returns the value of attribute relation.



27
28
29
# File 'lib/active_any/relation/merger.rb', line 27

def relation
  @relation
end

#valuesObject (readonly)

Returns the value of attribute values.



27
28
29
# File 'lib/active_any/relation/merger.rb', line 27

def values
  @values
end

Instance Method Details

#mergeObject



41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/active_any/relation/merger.rb', line 41

def merge
  normal_values.each do |name|
    value = values[name]
    relation.send("#{name}!", *value) unless value.nil? || (value.blank? && value != false)
  end

  merge_multi_values
  merge_single_values
  merge_clauses

  relation
end

#normal_valuesObject



35
36
37
38
39
# File 'lib/active_any/relation/merger.rb', line 35

def normal_values
  Relation::VALUE_METHODS -
    Relation::CLAUSE_METHODS -
    i[includes preload joins order reverse_order lock create_with reordering]
end