Sha256: 181d6dcbe4899256f044973cda98d486e3e6ee741fb418d82bd26163a75121f7

Contents?: true

Size: 772 Bytes

Versions: 4

Compression:

Stored size: 772 Bytes

Contents

module BaseCrm

  module CustomFieldable

    def initialize(attributes, original_scope = nil)
      super
      simplify_custom_fields
    end

    def simplify_custom_fields
      fields = self['custom_fields'] || {}
      self['custom_fields'] = fields.inject(Hashie::Mash.new) do |memo, field|
        name, value = field
        memo[name] = value['value']
        memo
      end
    end

    private

    # Because custom fields are hashes, and hashes result in
    # new instances of BaseCrm::Contact, we end up with a stack level too deep
    # because simplify_custom_fields gets fired all the time
    def convert_value(val, duping=false) #:nodoc:
      if val.is_a?(Hash) or val.is_a?(::Hash)
        val
      else
        super
      end
    end

  end

end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
basecrm-0.1.0 lib/base_crm/custom_fieldable.rb
basecrm-0.0.3 lib/base_crm/custom_fieldable.rb
basecrm-0.0.2 lib/base_crm/custom_fieldable.rb
basecrm-0.0.1 lib/base_crm/custom_fieldable.rb