Class: DriveTime::JoinBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/drive_time/builders/join_builder.rb

Overview

Take a series of name fields. Look up their values and assemble them into a single id For example it might build a name from a model’s title and its amount

Direct Known Subclasses

NameBuilder

Defined Under Namespace

Classes: MissingFieldError, NoFieldsError

Instance Method Summary collapse

Instance Method Details

#build(field_keys, row_map) ⇒ Object

Fields to use for names

Raises:



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# File 'lib/drive_time/builders/join_builder.rb', line 11

def build(field_keys, row_map)
  values = []

  field_keys.each do |field_key|
    raise MissingFieldError, "No field for key #{field_key}" if !row_map.has_key? field_key
    values << DriveTime.underscore_from_text(row_map[field_key]) unless row_map[field_key].empty?
  end

  raise NoFieldsError, 'No fields matched' if values.empty?

  values.each_with_index do |value, index|

    result = self.process_value value
    if result
      values[index] = result
    end
  end
  values.join('_').downcase
end