module Mor::Model

Public Instance Methods

attributes() click to toggle source
# File lib/mor/model.rb, line 98
def attributes
  @attributes ||= ActiveSupport::HashWithIndifferentAccess.new
end
attributes=(attributes) click to toggle source
# File lib/mor/model.rb, line 102
def attributes= attributes
  @attributes = ActiveSupport::HashWithIndifferentAccess.new(attributes)
end
destroy() click to toggle source
# File lib/mor/model.rb, line 131
def destroy
  run_callbacks :destroy do
    Mor.cache.delete(self.key)
  end
end
id() click to toggle source
# File lib/mor/model.rb, line 110
def id
  self.attributes[self.class.primary_key]
end
id=(val) click to toggle source
# File lib/mor/model.rb, line 114
def id=val
  self.attributes[self.class.primary_key]=val
end
key() click to toggle source
# File lib/mor/model.rb, line 106
def key
  self.class.key(self.id)
end
persisted?() click to toggle source
# File lib/mor/model.rb, line 92
def persisted?
  self.id.nil? ? false : self.class.index.include?(self.id)
end
save() click to toggle source
# File lib/mor/model.rb, line 125
def save
  if self.valid?
    save_or_update
  end
end
update(attributes = {}) click to toggle source

CRUD

# File lib/mor/model.rb, line 120
def update attributes = {}
  self.attributes.update attributes
  self.save
end

Private Instance Methods

add_to_index() click to toggle source
# File lib/mor/model.rb, line 155
def add_to_index
  self.class.index = self.class.index.push(self.id)
end
remove_from_index() click to toggle source
# File lib/mor/model.rb, line 159
def remove_from_index
  self.class.index = self.class.index.tap{ |ids| ids.delete(self.id) } 
end
save_or_update() click to toggle source
# File lib/mor/model.rb, line 143
def save_or_update
  if self.persisted?
    run_callbacks :update do
      save_to_cache
    end
  else
    run_callbacks :create do
      save_to_cache
    end
  end
end
save_to_cache() click to toggle source
# File lib/mor/model.rb, line 163
def save_to_cache
  run_callbacks :save do
    Mor.cache.set(self.key,self.class.serialize(self))
  end
end
validate_uniqueness_of_primary_key() click to toggle source
# File lib/mor/model.rb, line 139
def validate_uniqueness_of_primary_key
  errors.add(self.class.primary_key, :taken) if self.class.index.include?(self.id)
end