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]