class ActiveForce::Mapping

Constants

STRINGLIKE_TYPES

Public Class Methods

new(model) click to toggle source
# File lib/active_force/mapping.rb, line 17
def initialize model
  @model = model
end

Public Instance Methods

field(name, options) click to toggle source
# File lib/active_force/mapping.rb, line 29
def field name, options
  fields.merge!({ name => ActiveForce::Attribute.new(name, options) })
end
mappings() click to toggle source
# File lib/active_force/mapping.rb, line 21
def mappings
  Hash[fields.map { |field, attr| [field, attr.sfdc_name] }]
end
sfdc_names() click to toggle source
# File lib/active_force/mapping.rb, line 25
def sfdc_names
  mappings.values
end
table() click to toggle source
# File lib/active_force/mapping.rb, line 33
def table
  @table ||= ActiveForce::Table.new @model
end
translate_to_sf(attributes) click to toggle source
# File lib/active_force/mapping.rb, line 37
def translate_to_sf attributes
  attrs = attributes.map do |attribute, value|
    attr = fields[attribute.to_sym]
    [attr.sfdc_name, attr.value_for_hash(value)]
  end
  Hash[attrs]
end
translate_value(value, field_name) click to toggle source
# File lib/active_force/mapping.rb, line 45
def translate_value value, field_name
  return value unless !!field_name
  typecast_value value, fields[field_name].as
end

Private Instance Methods

fields() click to toggle source
# File lib/active_force/mapping.rb, line 53
def fields
  @fields ||= {}
end
typecast_value(value, type) click to toggle source

Handles Salesforce FieldTypes as described here: www.salesforce.com/us/developer/docs/api/Content/sforce_api_calls_describesobjects_describesobjectresult.htm#i1427700

# File lib/active_force/mapping.rb, line 59
def typecast_value value, type
  case type
  when *STRINGLIKE_TYPES
    value.to_s
  when :boolean
    !['false','0','f'].include? value.to_s.downcase
  when :int
    value.to_i
  when :double, :percent
    value.to_f
  when :date
    Date.parse value
  when :datetime
    DateTime.parse value
  else
    value
  end
end