lib/flexirest/request.rb in flexirest-1.10.0 vs lib/flexirest/request.rb in flexirest-1.10.1

- old
+ new

@@ -649,11 +649,11 @@ end end result end - def new_object(attributes, name = nil) + def new_object(attributes, name = nil, parent = nil, parent_attribute_name = nil) @method[:options][:has_many] ||= {} name = name.to_sym rescue nil if @method[:options][:has_many][name] overridden_name = name object = @method[:options][:has_many][name].new @@ -662,10 +662,13 @@ object = @method[:options][:has_one][name].new else object = create_object_instance end + object._parent = parent + object._parent_attribute_name = parent_attribute_name + if hal_response? && name.nil? attributes = handle_hal_links_embedded(object, attributes) end attributes.each do |k,v| @@ -689,12 +692,12 @@ raise Flexirest::InvalidArgumentsException.new("Optional args need all to be filled or none") unless value_from_object || value_from_other_type k = key || :key v = value assignable_hash = value_from_object ? object._attributes : {} if value_from_object && @method[:options][:lazy].include?(k) - assignable_hash[k] = Flexirest::LazyAssociationLoader.new(overridden_name, v, self, overridden_name:(overridden_name)) + assignable_hash[k] = Flexirest::LazyAssociationLoader.new(overridden_name, v, self, overridden_name:(overridden_name), parent: object, parent_attribute_name: k) elsif v.is_a? Hash - assignable_hash[k] = new_object(v, overridden_name ) + assignable_hash[k] = new_object(v, overridden_name, object, k) elsif v.is_a? Array if @method[:options][:array].include?(k) assignable_hash[k] = Array.new else assignable_hash[k] = Flexirest::ResultIterator.new