module DumbSerializer::Loadable
Public Instance Methods
all()
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 9 def all docs = MongoConnector.client[collection_name].find.to_a docs.each_with_object([]) do |doc, array| array << doc_to_object(doc) end end
find(id)
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 4 def find(id) doc = find_in_db(id) # handle error on no result! doc_to_object(doc) end
Private Instance Methods
build(partial)
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 27 def build(partial) return partial if CORE_TYPES.include?(partial.class) return partial.to_h if hash?(partial) partial['dd_vars'].each { |name, value| partial['dd_vars'][name] = build(value) } klass = class_get(partial['dd_class']) build_partial(klass, partial['dd_vars']) end
build_partial(klass, vars)
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 35 def build_partial(klass, vars) vars.each_with_object(klass.new) do |(key, value), partial| partial.instance_variable_set("@#{key}".to_sym, value) end end
class_get(str)
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 45 def class_get(str) Object.const_get(str) end
collection_name()
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 49 def collection_name to_s end
doc_to_object(doc)
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 23 def doc_to_object(doc) build(doc) end
find_in_db(id)
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 18 def find_in_db(id) collection = MongoConnector.client[collection_name] collection.find(_id: BSON::ObjectId(id)).to_a.first end
hash?(object)
click to toggle source
# File lib/dumb_serializer/loadable.rb, line 41 def hash?(object) object.instance_of?(BSON::Document) && !object['dd_class'] end