Module: DatastaxRails::Persistence
Overview
Handles persisting data into Datastax
Defined Under Namespace
Modules: ClassMethods
Instance Method Summary collapse
- #destroy(options = {}) ⇒ Object (also: #destroy_without_callbacks)
- #persisted? ⇒ Boolean
-
#reload(options = nil) ⇒ Object
Reloads the attributes of this object from the database.
-
#save(options = {}) ⇒ Object
See write for allowed options.
- #save!(options = {}) ⇒ Object
-
#toggle(attribute) ⇒ Object
Assigns to
attributethe boolean opposite ofattribute?. -
#toggle!(attribute) ⇒ Object
Wrapper around
togglethat saves the record. -
#update_attribute(name, value) ⇒ Object
Updates a single attribute and saves the record.
-
#update_attributes(attributes, _options = {}) ⇒ Object
Updates the attributes of the model from the passed-in hash and saves the record.
-
#update_attributes!(attributes, _options = {}) ⇒ Object
Updates its receiver just like
update_attributesbut callssave!instead ofsave, so an exception is raised if the record is invalid.
Instance Method Details
#destroy(options = {}) ⇒ Object Also known as: destroy_without_callbacks
189 190 191 192 193 |
# File 'lib/datastax_rails/persistence.rb', line 189 def destroy( = {}) self.class.remove(id_for_destroy, ) @destroyed = true freeze end |
#persisted? ⇒ Boolean
174 175 176 |
# File 'lib/datastax_rails/persistence.rb', line 174 def persisted? !(new_record? || destroyed?) end |
#reload(options = nil) ⇒ Object
Reloads the attributes of this object from the database. The optional options argument is passed to find when reloading so you may do e.g. record.reload(:lock => true) to reload the same record with an exclusive row lock.
268 269 270 271 272 273 274 275 276 |
# File 'lib/datastax_rails/persistence.rb', line 268 def reload( = nil) clear_association_cache fresh_object = self.class.unscoped { self.class.find(id, ) } @attributes.update(fresh_object.instance_variable_get('@attributes')) @attributes_cache = {} self end |
#save(options = {}) ⇒ Object
See write for allowed options
179 180 181 182 183 |
# File 'lib/datastax_rails/persistence.rb', line 179 def save( = {}) _create_or_update() rescue DatastaxRails::RecordInvalid false end |
#save!(options = {}) ⇒ Object
185 186 187 |
# File 'lib/datastax_rails/persistence.rb', line 185 def save!( = {}) _create_or_update() || fail(RecordNotSaved) end |
#toggle(attribute) ⇒ Object
Assigns to attribute the boolean opposite of attribute?. So if the predicate returns true the attribute will become false. This method toggles directly the underlying value without calling any setter. Returns self.
251 252 253 254 |
# File 'lib/datastax_rails/persistence.rb', line 251 def toggle(attribute) self[attribute] = !send("#{attribute}?") self end |
#toggle!(attribute) ⇒ Object
Wrapper around toggle that saves the record. This method differs from its non-bang version in that it passes through the attribute setter. Saving is not subjected to validation checks. Returns true if the record could be saved.
260 261 262 |
# File 'lib/datastax_rails/persistence.rb', line 260 def toggle!(attribute) toggle(attribute).update_attribute(attribute, self[attribute]) end |
#update_attribute(name, value) ⇒ Object
Updates a single attribute and saves the record. This is especially useful for boolean flags on existing records. Also note that
-
Validation is skipped.
-
Callbacks are invoked.
-
updated_at/updated_on column is updated if that column is available.
-
Updates all the attributes that are dirty in this object.
228 229 230 231 |
# File 'lib/datastax_rails/persistence.rb', line 228 def update_attribute(name, value) send("#{name}=", value) save(validate: false) end |
#update_attributes(attributes, _options = {}) ⇒ Object
Updates the attributes of the model from the passed-in hash and saves the record. If the object is invalid, the saving will fail and false will be returned.
235 236 237 238 |
# File 'lib/datastax_rails/persistence.rb', line 235 def update_attributes(attributes, = {}) assign_attributes(attributes) save end |
#update_attributes!(attributes, _options = {}) ⇒ Object
Updates its receiver just like update_attributes but calls save! instead of save, so an exception is raised if the record is invalid.
242 243 244 245 |
# File 'lib/datastax_rails/persistence.rb', line 242 def update_attributes!(attributes, = {}) assign_attributes(attributes) save! end |