class Object

Public Class Methods

inherited(child) click to toggle source
Calls superclass method
# File lib/scoped_search_paranoid.rb, line 4
def self.inherited(child)
  super
  if child.column_names.include?("deleted_at")
    child.class_eval do
      scope :without_deleted, where(:deleted_at => nil)
      scope :with_deleted, where("\"#{self.table_name}\".\"deleted_at\" IS NULL OR \"#{self.table_name}\".\"deleted_at\" IS NOT NULL")

      def deleted?
        !!deleted_at
      end

      def destroy(force=false)
        if force
          super()
        else
          update_attribute(:deleted_at, Time.now)
        end
      end

    end
  end

  if child.column_names.include?("archived_at")
    child.class_eval do
      scope :without_archived, where(:archived_at => nil)
      scope :with_archived, where("\"#{self.table_name}\".\"archived_at\" IS NULL OR \"#{self.table_name}\".\"archived_at\" IS NOT NULL")

      def archived?
        !!archived_at
      end

      def toggle_archive!
        self.archived_at = archived? ? nil : Time.now
        self.save
        archived_at
      end
    end
  end
end

Public Instance Methods

archived?() click to toggle source
# File lib/scoped_search_paranoid.rb, line 31
def archived?
  !!archived_at
end
deleted?() click to toggle source
# File lib/scoped_search_paranoid.rb, line 11
def deleted?
  !!deleted_at
end
destroy(force=false) click to toggle source
Calls superclass method
# File lib/scoped_search_paranoid.rb, line 15
def destroy(force=false)
  if force
    super()
  else
    update_attribute(:deleted_at, Time.now)
  end
end
toggle_archive!() click to toggle source
# File lib/scoped_search_paranoid.rb, line 35
def toggle_archive!
  self.archived_at = archived? ? nil : Time.now
  self.save
  archived_at
end