module ControllableVersioning::InstanceMethods
Public Instance Methods
restore_version!(version)
click to toggle source
# File lib/controllable_versioning/instance_methods.rb, line 13 def restore_version!(version) self.update!(restore_attrs(version)) end
version!(dynamic_attr={})
click to toggle source
# File lib/controllable_versioning/instance_methods.rb, line 4 def version!(dynamic_attr={}) ActiveRecord::Base.transaction do self.save! attr = versioned_attrs attr.merge! dynamic_attr self.class.target_model.create!(attr) end end
versions()
click to toggle source
# File lib/controllable_versioning/instance_methods.rb, line 17 def versions self.class.target_model.where({originated_model_id: self.id, originated_model_name: self.class.name}) end
Private Instance Methods
restore_attrs(version)
click to toggle source
# File lib/controllable_versioning/instance_methods.rb, line 31 def restore_attrs(version) accepted_column_names = self.class.column_names.map(&:to_sym) attrs = self.class.versioned_column_hash.map do |original_column, copied_column| next unless accepted_column_names.include?(original_column) [original_column, version.send(copied_column)] end.compact.to_h end
versioned_attrs()
click to toggle source
# File lib/controllable_versioning/instance_methods.rb, line 22 def versioned_attrs attrs = self.class.versioned_column_hash.map do |original_column, copied_column| [copied_column, self.send(original_column)] end.to_h attrs.merge!({:originated_model_id => self.id}) attrs.merge!({:originated_model_name => self.class.name}) attrs end