Sha256: 7b4c63e2c0078675e81d8618f9de05bf72040383d52faa6bdce1e03455bdf02d

Contents?: true

Size: 974 Bytes

Versions: 13

Compression:

Stored size: 974 Bytes

Contents

require 'active_force/field'
require 'active_force/table'
require 'forwardable'

module ActiveForce
  class Mapping
    extend Forwardable

    def_delegators :table, :custom_table?, :table_name

    def initialize model
      @model = model
    end

    def mappings
      @mappings ||= Hash[fields.map { |field, attr| [field, attr.sfdc_name] }]
    end

    def sfdc_names
      mappings.values
    end

    def field name, options
      fields.merge!({ name => ActiveForce::Field.new(name, options) })
    end

    def table
      @table ||= ActiveForce::Table.new @model
    end

    def translate_to_sf attributes
      attrs = attributes.map do |attribute, value|
        field = fields[attribute.to_sym]
        [field.sfdc_name, field.value_for_hash(value)]
      end
      Hash[attrs]
    end

    def translate_value value, field_name
      return value unless !!field_name
      value
    end


    private

    def fields
      @fields ||= {}
    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
active_force-0.24.0 lib/active_force/mapping.rb
active_force-0.23.0 lib/active_force/mapping.rb
active_force-0.22.1 lib/active_force/mapping.rb
active_force-0.22.0 lib/active_force/mapping.rb
active_force-0.21.0 lib/active_force/mapping.rb
active_force-0.20.1 lib/active_force/mapping.rb
active_force-0.20.0 lib/active_force/mapping.rb
active_force-0.19.0 lib/active_force/mapping.rb
active_force-0.18.0 lib/active_force/mapping.rb
active_force-0.17.0 lib/active_force/mapping.rb
active_force-0.16.0 lib/active_force/mapping.rb
active_force-0.15.1 lib/active_force/mapping.rb
active_force-0.15.0 lib/active_force/mapping.rb