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