Module: Dynamoid::Persistence

Extended by:
ActiveSupport::Concern
Included in:
Components
Defined in:
lib/dynamoid/persistence.rb

Overview

Persistence is responsible for dumping objects to and marshalling objects from the datastore. It tries to reserialize values to be of the same type as when they were passed in, based on the fields in the class.

Defined Under Namespace

Modules: ClassMethods

Instance Attribute Summary (collapse)

Instance Method Summary (collapse)

Instance Attribute Details

- (Object) new_record Also known as: new_record?

Returns the value of attribute new_record



11
12
13
# File 'lib/dynamoid/persistence.rb', line 11

def new_record
  @new_record
end

Instance Method Details

- (Object) delete

Delete this object from the datastore and all indexes.

Since:

  • 0.2.0



141
142
143
144
# File 'lib/dynamoid/persistence.rb', line 141

def delete
  delete_indexes
  Dynamoid::Adapter.delete(self.class.table_name, self.id)
end

- (Object) destroy

Delete this object, but only after running callbacks for it.

Since:

  • 0.2.0



131
132
133
134
135
136
# File 'lib/dynamoid/persistence.rb', line 131

def destroy
  run_callbacks(:destroy) do
    self.delete
  end
  self
end

- (Object) dump

Dump this object's attributes into hash form, fit to be persisted into the datastore.

Since:

  • 0.2.0



149
150
151
152
153
154
155
# File 'lib/dynamoid/persistence.rb', line 149

def dump
  Hash.new.tap do |hash|
    self.class.attributes.each do |attribute, options|
      hash[attribute] = dump_field(self.read_attribute(attribute), options[:type])
    end
  end
end

- (Boolean) persisted?

Is this object persisted in the datastore? Required for some ActiveModel integration stuff.

Returns:

  • (Boolean)

Since:

  • 0.2.0



107
108
109
# File 'lib/dynamoid/persistence.rb', line 107

def persisted?
  !new_record?
end

- (Object) save(options = {})

Run the callbacks and then persist this object in the datastore.

Since:

  • 0.2.0



114
115
116
117
118
119
120
121
122
123
124
125
126
# File 'lib/dynamoid/persistence.rb', line 114

def save(options = {})
  self.class.create_table

  @previously_changed = changes

  if new_record?
    run_callbacks(:create) { persist }
  else
    persist
  end

  self
end