Module: DatastaxRails::AttributeMethods::Typecasting

Extended by:
ActiveSupport::Concern
Defined in:
lib/datastax_rails/attribute_methods/typecasting.rb

Overview

Handles the mapping of attributes to their appropriate DatastaxRails::Column so that they can be typecasted.

Defined Under Namespace

Modules: ClassMethods

Instance Method Summary collapse

Instance Method Details

#initialize_attributes(attributes) ⇒ Object

This is a hook for use by modules that need to do extra stuff to attributes when they are initialized. (e.g. attribute serialization)



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/datastax_rails/attribute_methods/typecasting.rb', line 20

def initialize_attributes(attributes) #:nodoc:
  attrs = {}
  attributes.each do |k, v|
    col = column_for_attribute(k)
    next unless col
    if col.type == :map && k.to_s != col.name.to_s
      # See if we have a matching dynamic attribute column
      self.class.map_columns.each do |mcol|
        if k.to_s.starts_with?(mcol.name.to_s)
          attrs[mcol.name.to_s] ||= mcol.wrap_collection({}, self)
          attrs[mcol.name.to_s][k.to_s] = v
        end
      end
    else
      attrs[k.to_s] = col.collection? ? col.wrap_collection(v, self) : v
    end
  end
  attrs
end