module Integrative::Extensions::RelationExtension

Public Instance Methods

integrate(*name_or_names, **options) click to toggle source
# File lib/integrative/extensions/relation_extension.rb, line 4
def integrate(*name_or_names, **options)
  names = [*name_or_names]
  names.each do |name|
    integrate_per_name(name, options)
  end
  self
end
load() click to toggle source
Calls superclass method
# File lib/integrative/extensions/relation_extension.rb, line 12
def load
  super
  if @integrations_used.present?
    Rails.logger.info "Integrations fetched for #{@records.length} #{klass.name} records."
    @integrations_used.each do |integration|
      integration.integrated_class.integrative_find_and_assign(@records, integration)
    end
  end
  self
end

Private Instance Methods

integrate_per_name(name, options) click to toggle source
# File lib/integrative/extensions/relation_extension.rb, line 25
def integrate_per_name(name, options)
  integration = klass.integrations_defined.find { |i| i.name == name }
  if integration.nil?
    raise Errors::IntegrationDefinitionMissingError.new(klass, [name])
  end
  integration.call_options = options
  integration.invalidate
  @integrations_used ||= []
  @integrations_used << integration
end