Sha256: e8703dd0dd820372bd5bce03d725a19530893fc29a2c723f4ee6931ab55dccea
Contents?: true
Size: 1.13 KB
Versions: 1
Compression:
Stored size: 1.13 KB
Contents
module Kangaroo module Model module MassImport extend ActiveSupport::Concern module ClassMethods def mass_import objects, options = {} batch_size = options[:batch_size] objects = objects.select { |o| self === o } if batch_size until objects.empty? batch_objects = objects.slice! 0, batch_size import_data *prepare_mass_import(batch_objects) end else import_data *prepare_mass_import(objects) end end protected def prepare_mass_import objects changed_fields = objects.sum [], &:changed changed_values = [] changed_fields.uniq! objects.each do |object| attrs = object.instance_variable_get '@attributes' values = [object.id] + attrs.values_at(*changed_fields) changed_values << values end changed_fields = %w(.id) + changed_fields [changed_fields, changed_values] end end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
kangaroo-0.1.0.alpha1 | lib/kangaroo/model/mass_import.rb |