module ActiveRedis::Save

Public Instance Methods

new_record?() click to toggle source
# File lib/active_redis/save.rb, line 22
def new_record?
  !!@new_record
end
save(options={}) click to toggle source

TODO: add if valid?

# File lib/active_redis/save.rb, line 4
def save(options={})
  unless options[:validate] == false
    return false if invalid?(save_context)
  end

  if dirty?
    case save_context
    when :create
      perform_create
    when :update
      perform_update
    end
    true
  else
    false
  end
end

Private Instance Methods

perform_create() click to toggle source
# File lib/active_redis/save.rb, line 50
def perform_create
  #TODO: check if no object exists under that id
  @id ||= SecureRandom.uuid().delete('-')
  run_callbacks :create do
    perform_save
  end
end
perform_save() click to toggle source
# File lib/active_redis/save.rb, line 28
def perform_save
  run_callbacks :save do
    self.class.redis.pipelined do
      self.changes.each do |key, value|
        if value.last.nil?
          send("#{key}_object").delete
        else
          send("set_#{key}", value)
        end
      end
    end
    @new_record = false
    @changed_attributes.clear
  end
end
perform_update() click to toggle source
# File lib/active_redis/save.rb, line 44
def perform_update
  run_callbacks :update do
    perform_save
  end
end
save_context() click to toggle source
# File lib/active_redis/save.rb, line 58
def save_context
  if new_record?
    :create
  else
    :update
  end
end