module MongoModel::Attributes::Mongo

Public Instance Methods

from_mongo!(hash) click to toggle source
# File lib/mongomodel/attributes/mongo.rb, line 23
def from_mongo!(hash)
  hash.each do |k, v|
    property = properties_as[k.to_s]

    if property
      child = store(property.name, property.from_mongo(v))
    else
      child = store(k.to_sym, v)
    end

    child.parent_document = instance if child.respond_to?(:parent_document=)
  end
end
load!(hash) click to toggle source
# File lib/mongomodel/attributes/mongo.rb, line 19
def load!(hash)
  from_mongo!(hash)
end
to_mongo() click to toggle source
# File lib/mongomodel/attributes/mongo.rb, line 4
def to_mongo
  inject({}) do |result, (k, v)|
    property = properties[k]

    if property
      result[property.as] = property.to_mongo(v)
    else
      converter = Types.converter_for(v.class)
      result[k.to_s] = converter.to_mongo(v)
    end

    result
  end
end

Private Instance Methods

properties_as() click to toggle source
# File lib/mongomodel/attributes/mongo.rb, line 38
def properties_as
  @properties_as ||= properties.inject({}) do |result, (name, property)|
    result[property.as] = property
    result
  end
end