class MultipleMan::AttributeExtractor

Attributes

fields[RW]
identifier[RW]
include_previous[RW]
record[RW]

Public Class Methods

new(record, fields, include_previous = false) click to toggle source
# File lib/multiple_man/attribute_extractor.rb, line 6
def initialize(record, fields, include_previous = false)
  raise "Fields must be specified" unless fields

  self.include_previous = include_previous
  self.record = record
  self.fields = fields
end

Public Instance Methods

as_json() click to toggle source
# File lib/multiple_man/attribute_extractor.rb, line 14
def as_json
  if include_previous
    data.merge({previous: data("_was")})
  else
    data
  end
end

Private Instance Methods

data(suffix = nil) click to toggle source
# File lib/multiple_man/attribute_extractor.rb, line 24
def data(suffix = nil)
  Hash[fields.map do |field|
    get_field(field, suffix)
  end.reject(&:nil?)]
end
get_field(field, suffix) click to toggle source
# File lib/multiple_man/attribute_extractor.rb, line 30
def get_field(field, suffix)
  method = "#{field}#{suffix}"
  [field, record.send(method)] if record.respond_to? method
end