Module: AWS::Record::AbstractBase::InstanceMethods

Defined in:
lib/aws/record/abstract_base.rb

Instance Method Summary collapse

Instance Method Details

#attributesHash

Returns A hash with attribute names as hash keys (strings) and attribute values (of mixed types) as hash values.

Returns:

  • (Hash)

    A hash with attribute names as hash keys (strings) and attribute values (of mixed types) as hash values.



96
97
98
99
100
101
102
# File 'lib/aws/record/abstract_base.rb', line 96

def attributes
  attributes = Core::IndifferentHash.new
  attributes['id'] = id if persisted?
  self.class.attributes.keys.inject(attributes) do |hash,attr_name|
    hash.merge(attr_name => __send__(attr_name))
  end
end

#attributes=(attributes) ⇒ Hash

Acts like #update but does not call #save.

record.attributes = { :name => 'abc', :age => 20 }

Parameters:

  • attributes (Hash)

    A hash of attributes to set on this record without calling save.

Returns:

  • (Hash)

    Returns the attribute hash that was passed in.



113
114
115
# File 'lib/aws/record/abstract_base.rb', line 113

def attributes= attributes
  bulk_assign(attributes)
end

#deletetrue

Deletes the record.

Returns:

  • (true)


193
194
195
196
197
198
199
200
201
202
203
204
# File 'lib/aws/record/abstract_base.rb', line 193

def delete
  if persisted?
    if deleted?
      raise 'unable to delete, this object has already been deleted'
    else
      delete_storage
      @_deleted = true
    end
  else
    raise 'unable to delete, this object has not been saved yet'
  end
end

#deleted?Boolean

Returns true if this instance object has been deleted.

Returns:

  • (Boolean)

    Returns true if this instance object has been deleted.



207
208
209
# File 'lib/aws/record/abstract_base.rb', line 207

def deleted?
  persisted? ? !!@_deleted : false
end

#errorsObject



142
143
144
# File 'lib/aws/record/abstract_base.rb', line 142

def errors
  @errors ||= Errors.new
end

#idString

The id for each record is auto-generated. The default strategy generates uuid strings.

Returns:

  • (String)

    Returns the id string (uuid) for this record. Retuns nil if this is a new record that has not been persisted yet.



90
91
92
# File 'lib/aws/record/abstract_base.rb', line 90

def id
  @_id
end

#initialize(attributes = {}) ⇒ Model, HashModel

Constructs a new record.

Parameters:

  • attributes (Hash) (defaults to: {})

    A set of attribute values to seed this record with. The attributes are bulk assigned.

  • attributes (Hash) (defaults to: {})

    Attributes that should be bulk assigned to this record. You can also specify the shard (i.e. domain or table) this record should persist to via :shard).

Options Hash (attributes):

  • :shard (String)

    The domain/table this record should persist to. If this is omitted, it will persist to the class default shard (which defaults to the class name).

Returns:

  • (Model, HashModel)

    Returns a new (non-persisted) record.

    Call #save to persist changes to AWS.



61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
# File 'lib/aws/record/abstract_base.rb', line 61

def initialize attributes = {}
  
  attributes = attributes.dup
  
  # supporting :domain for backwards compatability, :shard is prefered
  @_shard = attributes.delete(:domain)
  @_shard ||= attributes.delete('domain')
  @_shard ||= attributes.delete(:shard)
  @_shard ||= attributes.delete('shard')
  @_shard = self.class.shard_name(@_shard)
  
  @_data = {}
  assign_default_values
  bulk_assign(attributes)
  
end

#new_record?Boolean

Returns true if this record has not been persisted to SimpleDB.

Returns:

  • (Boolean)

    Returns true if this record has not been persisted to SimpleDB.



132
133
134
# File 'lib/aws/record/abstract_base.rb', line 132

def new_record?
  !persisted?
end

#persisted?Boolean

Persistence indicates if the record has been saved previously or not.

Examples:

@recipe = Recipe.new(:name => 'Buttermilk Pancackes')
@recipe.persisted? #=> false
@recipe.save!
@recipe.persisted? #=> true

Returns:

  • (Boolean)

    Returns true if this record has been persisted.



126
127
128
# File 'lib/aws/record/abstract_base.rb', line 126

def persisted?
  !!@_persisted
end

#saveBoolean

Creates new records, updates existing records.

Returns:

  • (Boolean)

    Returns true if the record saved without errors, false otherwise.



149
150
151
152
153
154
155
156
157
# File 'lib/aws/record/abstract_base.rb', line 149

def save
  if valid?
    persisted? ? update : create
    clear_changes!
    true
  else
    false
  end
end

#save!true

Creates new records, updates exsting records. If there is a validation error then an exception is raised.

Returns:

  • (true)

    Returns true after a successful save.

Raises:

  • (InvalidRecordError)

    Raised when the record has validation errors and can not be saved.



164
165
166
167
# File 'lib/aws/record/abstract_base.rb', line 164

def save!
  raise InvalidRecordError.new(self) unless save
  true
end

#shardString Also known as: domain

Returns the name of the shard this record is persisted to or will be persisted to. Defaults to the domain/table named after this record class.

Returns:

  • (String)

    Returns the name of the shard this record is persisted to or will be persisted to. Defaults to the domain/table named after this record class.



81
82
83
# File 'lib/aws/record/abstract_base.rb', line 81

def shard
  @_shard
end

#update_attributes(attribute_hash) ⇒ Boolean

Bulk assigns the attributes and then saves the record.

Parameters:

  • attribute_hash (Hash)

    A hash of attribute names (keys) and attribute values to assign to this record.

Returns:

  • (Boolean)

    Returns true if the record saved without errors, false otherwise.



173
174
175
176
# File 'lib/aws/record/abstract_base.rb', line 173

def update_attributes attribute_hash
  bulk_assign(attribute_hash)
  save
end

#update_attributes!(attribute_hash) ⇒ true

Bulk assigns the attributes and then saves the record. Raises an exception (AWS::Record::InvalidRecordError) if the record is not valid.

Parameters:

  • attribute_hash (Hash)

    A hash of attribute names (keys) and attribute values to assign to this record.

Returns:

  • (true)


183
184
185
186
187
188
189
# File 'lib/aws/record/abstract_base.rb', line 183

def update_attributes! attribute_hash
  if update_attributes(attribute_hash)
    true
  else
    raise InvalidRecordError.new(self)
  end
end

#valid?Boolean

Returns true if this record has no validation errors.

Returns:

  • (Boolean)

    Returns true if this record has no validation errors.



137
138
139
140
# File 'lib/aws/record/abstract_base.rb', line 137

def valid?
  run_validations
  errors.empty?
end