Module: DataMapper::Has::Versions::InstanceMethods
- Defined in:
- lib/dm-has-versions/has/versions.rb
Instance Method Summary collapse
- #latest? ⇒ Boolean
-
#pending_version_attributes ⇒ Hash
Returns a hash of original values to be stored in the versions table when a new version is created.
- #revert ⇒ Object
- #revert_to(version) ⇒ Object
- #revert_to!(version) ⇒ Object
- #version ⇒ Object
- #version=(version) ⇒ Object
-
#versions ⇒ Collection
Returns a collection of other versions of this resource.
Instance Method Details
#latest? ⇒ Boolean
93 94 95 |
# File 'lib/dm-has-versions/has/versions.rb', line 93 def latest? version == versions.size end |
#pending_version_attributes ⇒ Hash
Returns a hash of original values to be stored in the versions table when a new version is created. It is cleared after a version model is created.
–
76 77 78 |
# File 'lib/dm-has-versions/has/versions.rb', line 76 def pending_version_attributes @pending_version_attributes ||= {} end |
#revert ⇒ Object
128 129 130 |
# File 'lib/dm-has-versions/has/versions.rb', line 128 def revert revert_to(version) or raise RevertError end |
#revert_to(version) ⇒ Object
121 122 123 124 125 126 |
# File 'lib/dm-has-versions/has/versions.rb', line 121 def revert_to(version) transaction{revert_to!(version)} true rescue RevertError false end |
#revert_to!(version) ⇒ Object
113 114 115 116 117 118 119 |
# File 'lib/dm-has-versions/has/versions.rb', line 113 def revert_to!(version) self.version = version pending_version_attributes.clear raise RevertError unless save target_id = versions[version].id versions.all(:id.gte => target_id).destroy! end |
#version ⇒ Object
97 98 99 |
# File 'lib/dm-has-versions/has/versions.rb', line 97 def version @version ||= versions.size end |
#version=(version) ⇒ Object
101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/dm-has-versions/has/versions.rb', line 101 def version=(version) if target = versions.first(:offset => version) self.properties.each do |property| next if property.key? name = property.name self.attribute_set(name, target.attribute_get(name)) end @version = version end !!target end |
#versions ⇒ Collection
Returns a collection of other versions of this resource. The versions are related on the models keys, and ordered by the version field.
–
87 88 89 90 91 |
# File 'lib/dm-has-versions/has/versions.rb', line 87 def versions version = self.class.const_get("Version") original_key = "#{self.class.storage_name.singular}_id".intern version.all(original_key => self.id, :order => [:id.asc]) end |