Module: Bulkrax::CsvEntry::AttributeBuilderMethod

Defined in:
app/models/bulkrax/csv_entry.rb

Overview

The purpose of this helper module is to make easier the testing of the rather complex switching logic for determining the method we use for building the value.

Class Method Summary collapse

Class Method Details

.for(key:, value:, entry:) ⇒ NilClass, Symbol

Parameters:

Returns:

  • (NilClass)

    when we won’t be processing this field

  • (Symbol)

    (either :build_value or :build_object)



252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
# File 'app/models/bulkrax/csv_entry.rb', line 252

def self.for(key:, value:, entry:)
  return if key == 'model'
  return if key == 'file'
  return if key == entry.related_parents_parsed_mapping
  return if key == entry.related_children_parsed_mapping
  return if value['excluded'] || value[:excluded]
  return if Bulkrax.reserved_properties.include?(key) && !entry.field_supported?(key)

  object_key = key if value.key?('object') || value.key?(:object)
  return unless entry.hyrax_record.respond_to?(key.to_s) || object_key.present?

  models_to_skip = Array.wrap(value['skip_object_for_model_names'] || value[:skip_object_for_model_names] || [])

  return :build_value if models_to_skip.detect { |model| entry.factory_class.model_name.name == model }
  return :build_object if object_key.present?

  :build_value
end