module Integrative::Integrated

Public Instance Methods

array_to_hash(array, integration) click to toggle source
# File lib/integrative/integrated.rb, line 35
def array_to_hash(array, integration)
  if integration.init_options[:array]
    array_to_hash_as_array(array, integration)
  else
    array_to_hash_as_value(array, integration)
  end
end
array_to_hash_as_array(array, integration) click to toggle source
# File lib/integrative/integrated.rb, line 51
def array_to_hash_as_array(array, integration)
  result = {}
  array.each do |object|
    key = object.public_send(integration.integrated_key)
    result[key] ||= []
    result[key] << integrative_value(object, integration)
  end
  result
end
array_to_hash_as_value(array, integration) click to toggle source
# File lib/integrative/integrated.rb, line 43
def array_to_hash_as_value(array, integration)
  result = array.map do |object|
    key = object.public_send(integration.integrated_key)
    [key, integrative_value(object, integration)]
  end
  Hash[result]
end
integrative_find(ids, options) click to toggle source
# File lib/integrative/integrated.rb, line 8
def integrative_find(ids, options)
  find(ids)
end
integrative_find_and_assign(integrator_records, integration) click to toggle source
# File lib/integrative/integrated.rb, line 16
def integrative_find_and_assign(integrator_records, integration)
  ids = integrator_ids(integrator_records, integration)
  integrated = integrative_find(ids, integration)
  integrated_by_integrator_id = array_to_hash(integrated, integration)
  integrator_records.each do |record|
    record.public_send(integration.setter, integrated_by_integrator_id[record.id])
  end
end
integrative_value(object, integration) click to toggle source
# File lib/integrative/integrated.rb, line 25
def integrative_value(object, integration)
  if [:primary, :value, :simple].include? integration.init_options[:as]
    object[:value]
  else
    object
  end
end
integrator_ids(integrator_records, integration) click to toggle source
# File lib/integrative/integrated.rb, line 12
def integrator_ids(integrator_records, integration)
  integrator_records.map(&integration.integrator_key)
end