Module: Aws::Record::ItemOperations
- Included in:
- Aws::Record
- Defined in:
- lib/aws-record/record/item_operations.rb
Defined Under Namespace
Modules: ItemOperationsClassMethods
Class Method Summary collapse
- .included(sub_class) ⇒ Object private
Instance Method Summary collapse
-
#assign_attributes(opts) ⇒ Object
Assigns the attributes provided onto the model.
-
#delete! ⇒ Object
Deletes the item instance that matches the key values of this item instance in Amazon DynamoDB.
-
#save(opts = {}) ⇒ Object
Saves this instance of an item to Amazon DynamoDB.
-
#save!(opts = {}) ⇒ Object
Saves this instance of an item to Amazon DynamoDB.
-
#update(new_params, opts = {}) ⇒ Object
Mass assigns the attributes to the model and then performs a save.
-
#update!(new_params, opts = {}) ⇒ Object
Updates model attributes and validates new values.
Class Method Details
.included(sub_class) ⇒ 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.
19 20 21 |
# File 'lib/aws-record/record/item_operations.rb', line 19 def self.included(sub_class) sub_class.extend(ItemOperationsClassMethods) end |
Instance Method Details
#assign_attributes(opts) ⇒ Object
Assigns the attributes provided onto the model.
109 110 111 112 113 114 115 116 |
# File 'lib/aws-record/record/item_operations.rb', line 109 def assign_attributes(opts) opts.each do |field, new_value| field = field.to_sym setter = "#{field}=" raise ArgumentError.new "Invalid field: #{field} for model" unless respond_to?(setter) public_send(setter, new_value) end end |
#delete! ⇒ Object
Deletes the item instance that matches the key values of this item instance in Amazon DynamoDB. Uses the Aws::DynamoDB::Client#delete_item API.
190 191 192 193 194 195 196 |
# File 'lib/aws-record/record/item_operations.rb', line 190 def delete! dynamodb_client.delete_item( table_name: self.class.table_name, key: key_values ) self.instance_variable_get("@data").destroyed = true end |
#save(opts = {}) ⇒ Object
Saves this instance of an item to Amazon DynamoDB. If this item is “new” as defined by having new or altered key attributes, will attempt a conditional Aws::DynamoDB::Client#put_item call, which will not overwrite an existing item. If the item only has altered non-key attributes, will perform an Aws::DynamoDB::Client#update_item call. Uses this item instance’s attributes in order to build the request on your behalf.
You can use the :force
option to perform a simple put/overwrite without conditional validation or update logic.
76 77 78 79 80 81 82 |
# File 'lib/aws-record/record/item_operations.rb', line 76 def save(opts = {}) if _invalid_record?(opts) false else _perform_save(opts) end end |
#save!(opts = {}) ⇒ Object
Saves this instance of an item to Amazon DynamoDB. If this item is “new” as defined by having new or altered key attributes, will attempt a conditional Aws::DynamoDB::Client#put_item call, which will not overwrite an existing item. If the item only has altered non-key attributes, will perform an Aws::DynamoDB::Client#update_item call. Uses this item instance’s attributes in order to build the request on your behalf.
You can use the :force
option to perform a simple put/overwrite without conditional validation or update logic.
47 48 49 50 51 52 53 54 |
# File 'lib/aws-record/record/item_operations.rb', line 47 def save!(opts = {}) ret = save(opts) if ret ret else raise Errors::ValidationError.new("Validation hook returned false!") end end |
#update(new_params, opts = {}) ⇒ Object
Mass assigns the attributes to the model and then performs a save
You can use the :force
option to perform a simple put/overwrite without conditional validation or update logic.
Note that aws-record allows you to change your model’s key values, but this will be interpreted as persisting a new item to your DynamoDB table
157 158 159 160 |
# File 'lib/aws-record/record/item_operations.rb', line 157 def update(new_params, opts = {}) assign_attributes(new_params) save(opts) end |
#update!(new_params, opts = {}) ⇒ Object
Updates model attributes and validates new values
You can use the :force
option to perform a simple put/overwrite without conditional validation or update logic.
Note that aws-record allows you to change your model’s key values, but this will be interpreted as persisting a new item to your DynamoDB table
181 182 183 184 |
# File 'lib/aws-record/record/item_operations.rb', line 181 def update!(new_params, opts = {}) assign_attributes(new_params) save!(opts) end |