Module: Aws::Record::DirtyTracking
- Included in:
- Aws::Record
- Defined in:
- lib/aws-record/record/dirty_tracking.rb
Defined Under Namespace
Modules: DirtyTrackingClassMethods
Class Method Summary collapse
Instance Method Summary collapse
-
#attribute_dirty!(name) ⇒ Object
Mark that an attribute is changing.
-
#attribute_dirty?(name) ⇒ Boolean
Returns
true
if the specified attribute has any dirty changes,false
otherwise. -
#attribute_was(name) ⇒ Object
Returns the original value of the specified attribute.
- #clean! ⇒ Object private
-
#dirty ⇒ Array
Returns an array with the name of the attributes with dirty changes.
-
#dirty? ⇒ Boolean
Returns
true
if any attributes have dirty changes,false
otherwise. -
#reload! ⇒ self
Fetches attributes for this instance of an item from Amazon DynamoDB using its primary key and the find(*) class method.
-
#rollback!(names = dirty) ⇒ Object
Restores all attributes to their original values.
-
#rollback_attribute!(name) ⇒ Object
Restores the attribute specified to its original value.
- #save ⇒ Object
Class Method Details
.included(sub_class) ⇒ Object
18 19 20 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 18 def self.included(sub_class) sub_class.extend(DirtyTrackingClassMethods) end |
Instance Method Details
#attribute_dirty!(name) ⇒ Object
Mark that an attribute is changing. This is useful in situations where it is necessary to track that the value of an attribute is changing in-place.
95 96 97 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 95 def attribute_dirty!(name) @data.attribute_dirty!(name) end |
#attribute_dirty?(name) ⇒ Boolean
Returns true
if the specified attribute has any dirty changes, false
otherwise.
38 39 40 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 38 def attribute_dirty?(name) @data.attribute_dirty?(name) end |
#attribute_was(name) ⇒ Object
Returns the original value of the specified attribute.
57 58 59 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 57 def attribute_was(name) @data.attribute_was(name) end |
#clean! ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
203 204 205 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 203 def clean! @data.clean! end |
#dirty ⇒ Array
Returns an array with the name of the attributes with dirty changes.
114 115 116 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 114 def dirty @data.dirty end |
#dirty? ⇒ Boolean
Returns true
if any attributes have dirty changes, false
otherwise.
134 135 136 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 134 def dirty? @data.dirty? end |
#reload! ⇒ self
Fetches attributes for this instance of an item from Amazon DynamoDB using its primary key and the find(*) class method.
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 145 def reload! primary_key = self.class.keys.values.inject({}) do |memo, key| memo[key] = send(key) memo end record = self.class.find(primary_key) unless record.nil? @data = record.instance_variable_get("@data") else raise Errors::NotFound.new("No record found") end clean! self end |
#rollback!(names = dirty) ⇒ Object
Restores all attributes to their original values.
198 199 200 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 198 def rollback!(names = dirty) Array(names).each { |name| rollback_attribute!(name) } end |
#rollback_attribute!(name) ⇒ Object
Restores the attribute specified to its original value.
179 180 181 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 179 def rollback_attribute!(name) @data.rollback_attribute!(name) end |
#save ⇒ Object
210 211 212 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 210 def save(*) super.tap { clean! } end |