module Opium::Model::Persistable
Public Instance Methods
delete( options = {} )
click to toggle source
# File lib/opium/model/persistable.rb, line 91 def delete( options = {} ) self.tap do attributes_or_headers( :delete, :delete, options ) do |headers| self.class.http_delete id, headers unless new_record? end self.freeze end end
Also aliased as: destroy
new_record?()
click to toggle source
# File lib/opium/model/persistable.rb, line 101 def new_record? self.id.nil? end
persisted?()
click to toggle source
# File lib/opium/model/persistable.rb, line 105 def persisted? !new_record? && !self.changed? end
pointer()
click to toggle source
# File lib/opium/model/persistable.rb, line 109 def pointer @pointer ||= Pointer.new( model_name: model_name, id: id ) unless new_record? end
save( options = {} )
click to toggle source
# File lib/opium/model/persistable.rb, line 63 def save( options = {} ) create_or_update( options ) rescue => e errors.add( :base, e.to_s ) false end
save!()
click to toggle source
# File lib/opium/model/persistable.rb, line 70 def save! create_or_update( validates: true ) || raise( InvalidError, 'failed to save, as model is invalid' ) end
to_parse()
click to toggle source
# File lib/opium/model/persistable.rb, line 113 def to_parse pointer.to_parse end
touch()
click to toggle source
# File lib/opium/model/persistable.rb, line 87 def touch save( validates: false ) end
update_attributes( attributes = {} )
click to toggle source
# File lib/opium/model/persistable.rb, line 74 def update_attributes( attributes = {} ) self.attributes = attributes save end
Also aliased as: update
update_attributes!( attributes = {} )
click to toggle source
# File lib/opium/model/persistable.rb, line 79 def update_attributes!( attributes = {} ) self.attributes = attributes save! end
Also aliased as: update!
Private Instance Methods
_create( options = {} )
click to toggle source
# File lib/opium/model/persistable.rb, line 129 def _create( options = {} ) self.attributes = attributes_or_headers( :post, :create, options ) do |headers| self.class.http_post self.attributes_to_parse( not_readonly: true ), headers end end
_update( options = {} )
click to toggle source
# File lib/opium/model/persistable.rb, line 135 def _update( options = {} ) self.attributes = attributes_or_headers( :put, :update, options ) do |headers| self.class.http_put id, self.attributes_to_parse( only: changes.keys ), headers end end
attributes_or_headers( method, action, options, &block )
click to toggle source
# File lib/opium/model/persistable.rb, line 145 def attributes_or_headers( method, action, options, &block ) result = block.call( options.deep_merge self.class.get_header_for( method, action, self ) ) if options[:sent_headers] @_sent_headers = result {} else result end end
create_or_update( options )
click to toggle source
# File lib/opium/model/persistable.rb, line 119 def create_or_update( options ) if options[:validates] == false || valid? if new_record? _create( options ) else _update( options ) end end.present? end
sent_headers()
click to toggle source
# File lib/opium/model/persistable.rb, line 141 def sent_headers @_sent_headers || {} end