module Dynamoid::Fields
All fields on a Dynamoid::Document
must be explicitly defined – if you have fields in the database that are not specified with field, then they will be ignored.
Constants
- PERMITTED_KEY_TYPES
Attributes
You can access the attributes of an object directly on its attributes method, which is by default an empty hash.
You can access the attributes of an object directly on its attributes method, which is by default an empty hash.
Public Instance Methods
Read an attribute from an object.
@param [Symbol] name the name of the field
@since 0.2.0
# File lib/dynamoid/fields.rb, line 116 def read_attribute(name) attributes[name.to_sym] end
Update a single attribute, saving the object afterwards.
@param [Symbol] attribute the attribute to update @param [Object] value the value to assign it
@since 0.2.0
# File lib/dynamoid/fields.rb, line 137 def update_attribute(attribute, value) write_attribute(attribute, value) save end
Updates multiple attibutes at once, saving the object once the updates are complete.
@param [Hash] attributes a hash of attributes to update
@since 0.2.0
# File lib/dynamoid/fields.rb, line 126 def update_attributes(attributes) attributes.each {|attribute, value| self.write_attribute(attribute, value)} unless attributes.nil? || attributes.empty? save end
Write an attribute on the object. Also marks the previous value as dirty.
@param [Symbol] name the name of the field @param [Object] value the value to assign to that field
@since 0.2.0
# File lib/dynamoid/fields.rb, line 98 def write_attribute(name, value) if (size = value.to_s.size) > MAX_ITEM_SIZE Dynamoid.logger.warn "DynamoDB can't store items larger than #{MAX_ITEM_SIZE} and the #{name} field has a length of #{size}." end if association = @associations[name] association.reset end attributes[name.to_sym] = value end
Private Instance Methods
Automatically called during the created callback to set the created_at time.
@since 0.2.0
# File lib/dynamoid/fields.rb, line 147 def set_created_at self.created_at = DateTime.now end
# File lib/dynamoid/fields.rb, line 158 def set_type self.type ||= self.class.to_s if self.class.attributes[:type] end
Automatically called during the save callback to set the updated_at time.
@since 0.2.0
# File lib/dynamoid/fields.rb, line 154 def set_updated_at self.updated_at = DateTime.now end