Module: Opium::Model::Persistable

Extended by:
ActiveSupport::Concern
Defined in:
lib/opium/model/persistable.rb

Defined Under Namespace

Modules: ClassMethods Classes: InvalidError

Instance Method Summary collapse

Instance Method Details

#delete(options = {}) ⇒ Object Also known as: destroy



91
92
93
94
95
96
97
98
# 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

#new_record?Boolean

Returns:



101
102
103
# File 'lib/opium/model/persistable.rb', line 101

def new_record?
  self.id.nil?
end

#persisted?Boolean

Returns:



105
106
107
# File 'lib/opium/model/persistable.rb', line 105

def persisted?
  !new_record? && !self.changed?
end

#pointerObject



109
110
111
# 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 = {}) ⇒ Object



63
64
65
66
67
68
# 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!Object



70
71
72
# 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_parseObject



113
114
115
# File 'lib/opium/model/persistable.rb', line 113

def to_parse
  pointer.to_parse
end

#touchObject



87
88
89
# File 'lib/opium/model/persistable.rb', line 87

def touch
  save( validates: false )
end

#update_attributes(attributes = {}) ⇒ Object Also known as: update



74
75
76
77
# File 'lib/opium/model/persistable.rb', line 74

def update_attributes( attributes = {} )
  self.attributes = attributes
  save
end

#update_attributes!(attributes = {}) ⇒ Object Also known as: update!



79
80
81
82
# File 'lib/opium/model/persistable.rb', line 79

def update_attributes!( attributes = {} )
  self.attributes = attributes
  save!
end