Module: JunkDrawer::BulkUpdatable

Defined in:
lib/junk_drawer/rails/bulk_updatable.rb

Overview

module to allow bulk updates for ‘ActiveRecord` models

Instance Method Summary collapse

Instance Method Details

#bulk_update(objects) ⇒ Object



10
11
12
13
14
15
16
17
18
19
# File 'lib/junk_drawer/rails/bulk_updatable.rb', line 10

def bulk_update(objects)
  objects = objects.select(&:changed?)
  return unless objects.any?

  unique_objects = uniquify_and_merge(objects)
  changed_attributes = extract_changed_attributes(unique_objects)
  query = build_query_for(unique_objects, changed_attributes)
  connection.execute(query)
  objects.each(&:clear_changes_information)
end