Module: Reviewed::Embeddable

Included in:
Base
Defined in:
lib/reviewed/embeddable.rb

Defined Under Namespace

Modules: ClassMethods

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.embedded_name(name, opts_name = nil) ⇒ Object



9
10
11
12
# File 'lib/reviewed/embeddable.rb', line 9

def embedded_name(name, opts_name=nil)
  return opts_name if opts_name
  ["Reviewed", name.singularize.classify].join("::")
end

.included(klass) ⇒ Object



4
5
6
# File 'lib/reviewed/embeddable.rb', line 4

def self.included(klass)
  klass.extend(Reviewed::Embeddable::ClassMethods)
end

Instance Method Details

#objectify(data) ⇒ Object



15
16
17
18
19
# File 'lib/reviewed/embeddable.rb', line 15

def objectify(data)
  data = objectify_has_many(data)
  data = objectify_has_one(data)
  return data
end

#objectify_has_many(json) ⇒ Object



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/reviewed/embeddable.rb', line 21

def objectify_has_many(json)
  self.class._embedded_many.each do |map|
    assoc_name, klass_name = [map.keys[0], map.values[0]]
    klass = klass_name.constantize
    if json.has_key?(assoc_name)
      json[assoc_name] = json[assoc_name].map do |obj|
        klass.new(obj)
      end
    end
  end
  return json
end

#objectify_has_one(json) ⇒ Object



34
35
36
37
38
39
40
41
42
43
# File 'lib/reviewed/embeddable.rb', line 34

def objectify_has_one(json)
  self.class._embedded_one.each do |map|
    assoc_name, klass_name = [map.keys[0], map.values[0]]
    klass = klass_name.constantize
    if json.has_key?(assoc_name)
      json[assoc_name] = klass.new(json[assoc_name])
    end
  end
  return json
end