class ActiveAny::Relation::Merger
Attributes
other[R]
relation[R]
values[R]
Public Class Methods
new(relation, other)
click to toggle source
# File lib/active_any/relation/merger.rb, line 29 def initialize(relation, other) @relation = relation @values = other.values @other = other end
Public Instance Methods
merge()
click to toggle source
# 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_values()
click to toggle source
# 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
Private Instance Methods
merge_clauses()
click to toggle source
# File lib/active_any/relation/merger.rb, line 63 def merge_clauses CLAUSE_METHODS.each do |method| clause = relation.get_value(method) other_clause = other.get_value(method) relation.set_value(method, clause.merge(other_clause)) end end
merge_multi_values()
click to toggle source
# File lib/active_any/relation/merger.rb, line 56 def merge_multi_values relation.order! other.order_clause unless other.order_clause.empty? relation.group! other.group_values if other.group_values end
merge_single_values()
click to toggle source
# File lib/active_any/relation/merger.rb, line 61 def merge_single_values; end