module Believer::Purging

Public Instance Methods

delete_all() click to toggle source

Directly deletes rows the query references. No object are loaded.

# File lib/believer/purging.rb, line 14
def delete_all
  del = Delete.new(:record_class => self.record_class)
  del.wheres = self.wheres.dup
  del.execute
end
delete_all_chunked(options = {}) click to toggle source
# File lib/believer/purging.rb, line 20
def delete_all_chunked(options = {})
  cnt = count
  chunk_size = options[:delete_batch_chunk_size] || (self.limit_to.nil? ? nil : self.limit_to.size) || cnt
  key_cols = self.record_class.primary_key_columns
  deleted_count = 0
  while deleted_count < cnt
    batch = Batch.new(:record_class => @record_class)
    rows_to_delete = clone.select(key_cols).limit(chunk_size).execute
    rows_to_delete.each do |row_to_delete|
      batch << Delete.new(:record_class => self.record_class).where(row_to_delete)
    end
    batch.execute
    deleted_count += batch.commands.size
  end
  deleted_count
end
destroy_all() click to toggle source

Destroys all objects returned by the query. This first loads the object before deleting, allowing callbacks to be called.

# File lib/believer/purging.rb, line 5
def destroy_all
  objects = to_a
  objects.each do |obj|
    obj.destroy
  end
  objects.size
end