class RailsCoreExtensions::TransferRecords

Public Class Methods

new(parent, klass, options = {}) click to toggle source
# File lib/rails_core_extensions/transfer_records.rb, line 3
def initialize(parent, klass, options = {})
  @parent = parent
  @klass = klass
  @options = options
end

Public Instance Methods

transfer_from(objects) click to toggle source
# File lib/rails_core_extensions/transfer_records.rb, line 9
def transfer_from(objects)
  record_ids = objects.flat_map { |o|
    o.send(@klass.name.underscore + '_ids')
  }
  unless record_ids.empty?
    @options[:foreign_key] ||= @parent.class.name.underscore + '_id'
    update_options = @options.except(:foreign_key)
    update_options[@options[:foreign_key]] = @parent.id
    @klass.where(id: record_ids).update_all(update_options)
  end
end