Module: AWS::Record::AbstractBase::InstanceMethods
- Defined in:
- lib/aws/record/abstract_base.rb
Instance Method Summary collapse
-
#attributes ⇒ Hash
A hash with attribute names as hash keys (strings) and attribute values (of mixed types) as hash values.
-
#attributes=(attributes) ⇒ Hash
Acts like #update but does not call #save.
-
#delete ⇒ true
(also: #destroy)
Deletes the record.
-
#deleted? ⇒ Boolean
Returns true if this instance object has been deleted.
- #errors ⇒ Object
-
#id ⇒ String
The id for each record is auto-generated.
-
#initialize(attributes = {}) ⇒ Model, HashModel
Constructs a new record.
-
#new_record? ⇒ Boolean
Returns true if this record has not been persisted to SimpleDB.
-
#persisted? ⇒ Boolean
Persistence indicates if the record has been saved previously or not.
-
#save(opts = {}) ⇒ Boolean
Creates new records, updates existing records.
-
#save! ⇒ true
Creates new records, updates exsting records.
-
#shard ⇒ String
(also: #domain)
Returns the name of the shard this record is persisted to or will be persisted to.
-
#update_attributes(attribute_hash) ⇒ Boolean
Bulk assigns the attributes and then saves the record.
-
#update_attributes!(attribute_hash) ⇒ true
Bulk assigns the attributes and then saves the record.
-
#valid?(opts = {}) ⇒ Boolean
Returns true if this record has no validation errors.
Instance Method Details
#attributes ⇒ Hash
Returns A hash with attribute names as hash keys (strings) and attribute values (of mixed types) as hash values.
93 94 95 96 97 98 99 |
# File 'lib/aws/record/abstract_base.rb', line 93 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 }
110 111 112 |
# File 'lib/aws/record/abstract_base.rb', line 110 def attributes= attributes bulk_assign(attributes) end |
#delete ⇒ true Also known as: destroy
Deletes the record.
194 195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/aws/record/abstract_base.rb', line 194 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.
209 210 211 |
# File 'lib/aws/record/abstract_base.rb', line 209 def deleted? persisted? ? !!@_deleted : false end |
#errors ⇒ Object
142 143 144 |
# File 'lib/aws/record/abstract_base.rb', line 142 def errors @errors ||= Errors.new end |
#id ⇒ String
The id for each record is auto-generated. The default strategy generates uuid strings.
87 88 89 |
# File 'lib/aws/record/abstract_base.rb', line 87 def id @_id end |
#initialize(attributes = {}) ⇒ Model, HashModel
Constructs a new record.
58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/aws/record/abstract_base.rb', line 58 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.
129 130 131 |
# File 'lib/aws/record/abstract_base.rb', line 129 def new_record? !persisted? end |
#persisted? ⇒ Boolean
Persistence indicates if the record has been saved previously or not.
123 124 125 |
# File 'lib/aws/record/abstract_base.rb', line 123 def persisted? !!@_persisted end |
#save(opts = {}) ⇒ Boolean
Creates new records, updates existing records.
150 151 152 153 154 155 156 157 158 |
# File 'lib/aws/record/abstract_base.rb', line 150 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.
165 166 167 168 |
# File 'lib/aws/record/abstract_base.rb', line 165 def save! raise InvalidRecordError.new(self) unless save true end |
#shard ⇒ String 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.
78 79 80 |
# File 'lib/aws/record/abstract_base.rb', line 78 def shard @_shard end |
#update_attributes(attribute_hash) ⇒ Boolean
Bulk assigns the attributes and then saves the record.
174 175 176 177 |
# File 'lib/aws/record/abstract_base.rb', line 174 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.
184 185 186 187 188 189 190 |
# File 'lib/aws/record/abstract_base.rb', line 184 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.
135 136 137 138 139 140 |
# File 'lib/aws/record/abstract_base.rb', line 135 def valid? opts = {} opts = {} if opts.nil? opts = {:validate => true}.merge(opts) run_validations if opts[:validate] errors.empty? end |