Select your cookie preferences

We use essential cookies and similar tools that are necessary to provide our site and services. We use performance cookies to collect anonymous statistics, so we can understand how customers use our site and make improvements. Essential cookies cannot be deactivated, but you can choose “Customize” or “Decline” to decline performance cookies.

If you agree, AWS and approved third parties will also use cookies to provide useful site features, remember your preferences, and display relevant content, including relevant advertising. To accept or decline all non-essential cookies, choose “Accept” or “Decline.” To make more detailed choices, choose “Customize.”

You are viewing documentation for version 1 of the AWS SDK for Ruby. Version 2 documentation can be found here.

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.

[View source]

76
77
78
79
80
81
# File 'lib/aws/record/abstract_base.rb', line 76

def attributes
  attributes = Core::IndifferentHash.new
  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.

[View source]

92
93
94
# File 'lib/aws/record/abstract_base.rb', line 92

def attributes= attributes
  bulk_assign(attributes)
end

#deletetrue Also known as: destroy

Deletes the record.

Returns:

  • (true)
[View source]

176
177
178
179
180
181
182
183
184
185
186
187
# File 'lib/aws/record/abstract_base.rb', line 176

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.

[View source]

191
192
193
# File 'lib/aws/record/abstract_base.rb', line 191

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

#errorsObject

[View source]

124
125
126
# File 'lib/aws/record/abstract_base.rb', line 124

def errors
  @errors ||= Errors.new
end

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

Constructs a new record.

Parameters:

  • 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.

[View source]

49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/aws/record/abstract_base.rb', line 49

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.

[View source]

111
112
113
# File 'lib/aws/record/abstract_base.rb', line 111

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.

[View source]

105
106
107
# File 'lib/aws/record/abstract_base.rb', line 105

def persisted?
  !!@_persisted
end

#save(opts = {}) ⇒ Boolean

Creates new records, updates existing records.

Parameters:

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

    Pass :validate => false to skip validations

Returns:

  • (Boolean)

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

[View source]

132
133
134
135
136
137
138
139
140
# File 'lib/aws/record/abstract_base.rb', line 132

def save opts = {}
  if valid?(opts)
    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.

[View source]

147
148
149
150
# File 'lib/aws/record/abstract_base.rb', line 147

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.

[View source]

69
70
71
# File 'lib/aws/record/abstract_base.rb', line 69

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.

[View source]

156
157
158
159
# File 'lib/aws/record/abstract_base.rb', line 156

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)
[View source]

166
167
168
169
170
171
172
# File 'lib/aws/record/abstract_base.rb', line 166

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

#valid?(opts = {}) ⇒ Boolean

Returns true if this record has no validation errors.

Parameters:

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

    Pass :validate => false to skip validations

Returns:

  • (Boolean)

    Returns true if this record has no validation errors.

[View source]

117
118
119
120
121
122
# File 'lib/aws/record/abstract_base.rb', line 117

def valid? opts = {}
  opts = {} if opts.nil?
  opts = {:validate => true}.merge(opts)
  run_validations if opts[:validate]
  errors.empty?
end