Class: ActiveRecord::Relation::Merger
- Inherits:
 - 
      Object
      
        
- Object
 - ActiveRecord::Relation::Merger
 
 
- Defined in:
 - lib/active_record/relation/merger.rb
 
Overview
:nodoc:
Constant Summary collapse
- NORMAL_VALUES =
 Relation::VALUE_METHODS - Relation::CLAUSE_METHODS - [:includes, :preload, :joins, :left_outer_joins, :order, :reverse_order, :lock, :create_with, :reordering]
Instance Attribute Summary collapse
- 
  
    
      #other  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute other.
 - 
  
    
      #relation  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute relation.
 - 
  
    
      #values  ⇒ Object 
    
    
  
  
  
  
    
      readonly
    
    
  
  
  
  
  
  
    
Returns the value of attribute values.
 
Instance Method Summary collapse
- 
  
    
      #initialize(relation, other)  ⇒ Merger 
    
    
  
  
  
    constructor
  
  
  
  
  
  
  
    
A new instance of Merger.
 - #merge ⇒ Object
 - #normal_values ⇒ Object
 
Constructor Details
#initialize(relation, other) ⇒ Merger
Returns a new instance of Merger.
      51 52 53 54 55  | 
    
      # File 'lib/active_record/relation/merger.rb', line 51 def initialize(relation, other) @relation = relation @values = other.values @other = other end  | 
  
Instance Attribute Details
#other ⇒ Object (readonly)
Returns the value of attribute other.
      49 50 51  | 
    
      # File 'lib/active_record/relation/merger.rb', line 49 def other @other end  | 
  
#relation ⇒ Object (readonly)
Returns the value of attribute relation.
      49 50 51  | 
    
      # File 'lib/active_record/relation/merger.rb', line 49 def relation @relation end  | 
  
#values ⇒ Object (readonly)
Returns the value of attribute values.
      49 50 51  | 
    
      # File 'lib/active_record/relation/merger.rb', line 49 def values @values end  | 
  
Instance Method Details
#merge ⇒ Object
      65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89  | 
    
      # File 'lib/active_record/relation/merger.rb', line 65 def merge normal_values.each do |name| value = values[name] # The unless clause is here mostly for performance reasons (since the `send` call might be moderately # expensive), most of the time the value is going to be `nil` or `.blank?`, the only catch is that # `false.blank?` returns `true`, so there needs to be an extra check so that explicit `false` values # don't fall through the cracks. unless value.nil? || (value.blank? && false != value) if name == :select relation._select!(*value) else relation.send("#{name}!", *value) end end end merge_multi_values merge_single_values merge_clauses merge_preloads merge_joins merge_outer_joins relation end  | 
  
#normal_values ⇒ Object
      61 62 63  | 
    
      # File 'lib/active_record/relation/merger.rb', line 61 def normal_values NORMAL_VALUES end  |