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

- old
+ new

@@ -9,10 +9,12 @@ include Associations attr_accessor :_status attr_accessor :_etag attr_accessor :_headers + attr_accessor :_parent + attr_accessor :_parent_attribute_name instance_methods.each do |m| next unless %w{display presence load require untrust trust freeze method enable_warnings with_warnings suppress capture silence quietly debugger breakpoint}.map(&:to_sym).include? m undef_method m end @@ -39,10 +41,17 @@ end def _copy_from(result) @attributes = result._attributes @_status = result._status + self._parent = result._parent + self._parent_attribute_name = result._parent_attribute_name + @attributes.each do |k,v| + if v.respond_to?(:_parent) && v._parent.present? + @attributes[k]._parent = self + end + end _clean! end def dirty? @dirty_attributes.size > 0 @@ -182,16 +191,23 @@ def to_json output = to_hash output.to_json end + def _set_dirty(key) + @dirty_attributes[key.to_sym] = true + end + private def _set_attribute(key, value) old_value = @dirty_attributes[key.to_sym] old_value = @attributes[key.to_sym] unless old_value old_value = old_value[0] if old_value and old_value.is_a? Array @dirty_attributes[key.to_sym] = [old_value, value] if old_value != value + if _parent + _parent._set_dirty(_parent_attribute_name) + end @attributes[key.to_sym] = value end def _reset_attribute(key) old_value = @dirty_attributes[key.to_sym]