lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.5.3 vs lib/sequel/plugins/bitemporal.rb in sequel_bitemporal-0.6.1
- old
+ new
@@ -143,27 +143,23 @@
{}
end
end
def attributes=(attributes)
- if attributes.delete(:partial_update) && !@pending_version && !new? && current_version
- @current_version_values = current_version.values
- current_attributes = current_version.keys.inject({}) do |hash, key|
- hash[key] = current_version.send key
- hash
- end
- current_attributes.delete :valid_from
- current_attributes.delete :valid_to
- attributes = current_attributes.merge attributes
- elsif !new? && current_version
- @current_version_values = current_version.values
- end
- attributes.delete :id
if attributes_hold_changes? attributes
- @pending_version ||= model.version_class.new
+ @pending_version ||= begin
+ current_attributes = {}
+ current_version.keys.each do |key|
+ case key
+ when :id, :valid_from, :valid_to, :created_at, :expired_at
+ else
+ current_attributes[key] = current_version.send key
+ end
+ end if current_version?
+ model.version_class.new current_attributes
+ end
pending_version.set attributes
- pending_version.master_id = id unless new?
end
end
def update_attributes(attributes={})
self.attributes = attributes
@@ -330,11 +326,16 @@
propagated.send :set_values, version_attributes.merge(attributes)
propagated.save validate: false
propagated
end
+ def current_version?
+ !new? && current_version
+ end
+
def attributes_hold_changes?(attributes)
- return true if new? || !current_version
+ return true unless current_version?
+ @current_version_values = current_version.values
attributes.detect do |key, new_value|
case key
when :master_id, :created_at, :expired_at
false
when :valid_from