lib/reviewed/embeddable.rb in reviewed-0.9.1 vs lib/reviewed/embeddable.rb in reviewed-1.0.0

- old
+ new

@@ -4,17 +4,12 @@ def self.included(klass) klass.extend(Reviewed::Embeddable::ClassMethods) end class << self - - def embedded_class(name, opts_name=nil) - name = opts_name ? opts_name : embedded_name(name) - name.constantize - end - - def embedded_name(name) + def embedded_name(name, opts_name=nil) + return opts_name if opts_name ["Reviewed", name.singularize.classify].join("::") end end def objectify(data) @@ -23,27 +18,27 @@ return data end def objectify_has_many(json) self.class._embedded_many.each do |map| - key, value = [map.keys[0], map.values[0]] - - if json.has_key?(key) - json[key] = json[key].map do |obj| - value.new(obj) + 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 def objectify_has_one(json) self.class._embedded_one.each do |map| - key, value = [map.keys[0], map.values[0]] - - if json.has_key?(key) - json[key] = value.new(json[key]) + 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 @@ -53,18 +48,18 @@ def has_attachments include Attachable end def has_many(name, opts={}) - klass = Reviewed::Embeddable.embedded_class(name.to_s, opts[:class_name]) + klass_string = Reviewed::Embeddable.embedded_name(name.to_s, opts[:class_name]) association = opts[:as] || name - _embedded_many << { association.to_s => klass } + _embedded_many << { association.to_s => klass_string } end def has_one(name, opts={}) - klass = Reviewed::Embeddable.embedded_class(name.to_s, opts[:class_name]) + klass_string = Reviewed::Embeddable.embedded_name(name.to_s, opts[:class_name]) association = opts[:as] || name - _embedded_one << { association.to_s => klass } + _embedded_one << { association.to_s => klass_string } end def _embedded_many @_embedded_many ||= [] end