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
-
#destroyed? ⇒ Boolean
Returns
true
if the model has been destroyed,false
otherwise. -
#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. -
#new_record? ⇒ Boolean
Returns
true
if the model is newly initialized,false
otherwise. -
#persisted? ⇒ Boolean
Returns
true
if the model is not new and has not been deleted,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.
267 268 269 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 267 def clean! @data.clean! end |
#destroyed? ⇒ Boolean
Returns true
if the model has been destroyed, false
otherwise.
198 199 200 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 198 def destroyed? @data.destroyed? 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 |
#new_record? ⇒ Boolean
Returns true
if the model is newly initialized, false
otherwise.
176 177 178 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 176 def new_record? @data.new_record? end |
#persisted? ⇒ Boolean
Returns true
if the model is not new and has not been deleted, false
otherwise.
156 157 158 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 156 def persisted? @data.persisted? end |
#reload! ⇒ self
Fetches attributes for this instance of an item from Amazon DynamoDB using its primary key and the find(*) class method.
209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 209 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.
262 263 264 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 262 def rollback!(names = dirty) Array(names).each { |name| rollback_attribute!(name) } end |
#rollback_attribute!(name) ⇒ Object
Restores the attribute specified to its original value.
243 244 245 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 243 def rollback_attribute!(name) @data.rollback_attribute!(name) end |
#save ⇒ Object
274 275 276 |
# File 'lib/aws-record/record/dirty_tracking.rb', line 274 def save(*) super.tap { clean! } end |