def save(login)
id_var = self.class.pk || "uuid"
if persisted?
if self.class.requires_update_attributes
changed_attrs = {}
unless changes.empty?
changes.each do |key, value|
value = value[1]
unless self.class.excludes_attributes.include? key.to_sym
extract_value(changed_attrs, key, value)
end
end
end
self.class.requires_update_attributes.each do |key|
key = key.to_s
value = instance_variable_get("@#{key}")
extract_value(changed_attrs, key, value)
end
DataStore.instance.save(self.class.name, login, instance_variable_get("@#{id_var}"), changed_attrs) unless changed_attrs.empty?
else
DataStore.instance.save(self.class.name, login, instance_variable_get("@#{id_var}"), self.attributes(true))
end
else
DataStore.instance.create(self.class.name, login, instance_variable_get("@#{id_var}"), self.attributes(true))
end
@previously_changed = changes
@changed_attributes.clear
@new_record = false
@persisted = true
@deleted = false
self
end