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.
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 72 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 109 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 82 def update_attributes(attributes) attributes.each {|attribute, value| self.write_attribute(attribute, value)} if self.new_record # if never saved save. save else # update attributes if we have saved. # next if self.read_only_attributes.include? attribute.to_s put this back in. run_callbacks(:save) do update! do |u| attributes.each do |attribute, value| u.set attribute => dump_field( self.read_attribute(attribute), self.class.attributes[attribute.to_sym] ) end end end save end 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 54 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 119 def set_created_at self.created_at = DateTime.now end
Automatically called during the save callback to set the updated_at time.
@since 0.2.0
# File lib/dynamoid/fields.rb, line 126 def set_updated_at self.updated_at = DateTime.now end