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
( :delete, :delete, options ) do ||
self.class.http_delete id, unless new_record?
end
self.freeze
end
end
|
#new_record? ⇒ Boolean
101
102
103
|
# File 'lib/opium/model/persistable.rb', line 101
def new_record?
self.id.nil?
end
|
105
106
107
|
# File 'lib/opium/model/persistable.rb', line 105
def persisted?
!new_record? && !self.changed?
end
|
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
|
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
|
113
114
115
|
# File 'lib/opium/model/persistable.rb', line 113
def to_parse
pointer.to_parse
end
|
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
|