Class: MultipleMan::AttributeExtractor

Inherits:
Object
  • Object
show all
Defined in:
lib/multiple_man/attribute_extractor.rb

Instance Method Summary collapse

Constructor Details

#initialize(record, fields, identifier) ⇒ AttributeExtractor

Returns a new instance of AttributeExtractor.



6
7
8
9
10
11
12
# File 'lib/multiple_man/attribute_extractor.rb', line 6

def initialize(record, fields, identifier)
  raise "Fields must be specified" unless fields
  
  self.record = record
  self.fields = fields 
  self.identifier = identifier || :id
end

Instance Method Details

#data ⇒ Object



14
15
16
17
18
19
20
21
# File 'lib/multiple_man/attribute_extractor.rb', line 14

def data
  {
    id: identifier_for_record,
    data: Hash[fields.map do |field|
      [field, record.send(field)]
    end]
  }
end

#identifier_for_record ⇒ Object



23
24
25
26
27
28
29
# File 'lib/multiple_man/attribute_extractor.rb', line 23

def identifier_for_record
  if identifier.class == Proc
    identifier.call(record)
  else
    record.send(identifier)
  end
end

#to_json ⇒ Object



31
32
33
# File 'lib/multiple_man/attribute_extractor.rb', line 31

def to_json
  data.to_json
end