module Elos::Repository::Adapter::Elos::Model::Persistable

Attributes

persisted[RW]

Public Instance Methods

create(attrs = {}) click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 13
def create(attrs = {})
  obj = new(attrs)
  obj.save
  obj
end
create!(attrs = {}) click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 19
def create!(attrs = {})
  obj = new(attrs)
  obj.save!
  obj
end
persisted?() click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 26
def persisted?
  persisted
end
save() click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 30
def save
  _save
end
save!() click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 34
def save!
  _save(raise_error: true)
end
update(attrs = {}) click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 38
def update(attrs = {})
  assign_attributes(attrs)
  save
end
update!(attrs = {}) click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 43
def update!(attrs = {})
  assign_attributes(attrs)
  save!
end

Private Instance Methods

_save(raise_error: false, callback: true) click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 50
def _save(raise_error: false, callback: true)
  return false unless raise_error ? validate! : valid?
  optionally_run_callbacks(:save, callback: callback) do
    if persisted?
      optionally_run_callbacks(:update, callback: callback) do
        _save_core
      end
    else
      optionally_run_callbacks(:create, callback: callback) do
        _save_core
        self.persisted = true
      end
    end
  end
  true
end
_save_core() click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 75
def _save_core
  r = reindex
  self.id ||= r
end
optionally_run_callbacks(method, callback: true, &block) click to toggle source
# File lib/elos/repository/adapter/elos/model/persistable.rb, line 67
def optionally_run_callbacks(method, callback: true, &block)
  if callback
    run_callbacks(method, &block)
  else
    block.()
  end
end