Module: Cms::Behaviors::VersionRecord

Defined in:
lib/cms/behaviors/versioning.rb

Overview

Represents a record as of a specific version in the versions table.

Instance Method Summary collapse

Instance Method Details

#build_object_from_versionObject

Create an original 'record' of the Versioned about as it existed as of this VersionRecord.



21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# File 'lib/cms/behaviors/versioning.rb', line 21

def build_object_from_version()
  obj = versioned_class.new

  (versioned_class.versioned_columns + [:version, :created_at, :created_by_id, :updated_at, :updated_by_id]).each do |a|
    obj.send("#{a}=", self.send(a))
  end
  obj.id = original_record_id

  #obj.lock_version = lock_version

  # Need to do this so associations can be loaded
  obj.instance_variable_set("@persisted", true)
  obj.instance_variable_set("@new_record", false)

  # Callback to allow us to load other data when an older version is loaded
  obj.after_as_of_version if obj.respond_to?(:after_as_of_version)

  # Last but not least, clear the changed attributes
  if changed_attrs = obj.send(:changed_attributes)
    changed_attrs.clear
  end

  obj
end