Method: ActiveRecord::Bulkoperation::Util::FlushDirtyObjects#flush

Defined in:
lib/activerecord_bulkoperation/util/flush_dirty_objects.rb

#flush(args = {}) ⇒ Object



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
# File 'lib/activerecord_bulkoperation/util/flush_dirty_objects.rb', line 70

def flush(args = {})
  fail 'nil object' unless args

  affected = 0

  @scheduled_deletions.each_pair_in_detail_hierarchy do |k, v|
    affected += k.delete_group(v, args)
    @scheduled_deletions[k] = nil
    v.each { |record| record.on_closed_scheduled_operation }
  end

  @scheduled_merges.each_pair_in_master_hierarchy do |k, v|

    affected += k.merge_group( v.insert_or_update, args )

    v.insert_on_missing.each_pair do |keys,records|

      affected += k.insert_on_missing_group( keys, records, args )
    end

    @scheduled_merges[k] = nil
    v.insert_or_update.each  { |record| record.on_closed_scheduled_operation }
    v.insert_on_missing.values.each { |array| array.each{ |record| record.on_closed_scheduled_operation } }
  end

  affected
end