module ActsAsParanoid

Constants

VERSION

Public Instance Methods

acts_as_paranoid(options = {}) click to toggle source
# File lib/acts_as_paranoid.rb, line 19
def acts_as_paranoid(options = {})
  if !options.is_a?(Hash) && !options.empty?
    raise ArgumentError, "Hash expected, got #{options.class.name}"
  end

  class_attribute :paranoid_configuration

  self.paranoid_configuration = {
    column: "deleted_at",
    column_type: "time",
    recover_dependent_associations: true,
    dependent_recovery_window: 2.minutes,
    double_tap_destroys_fully: true
  }
  paranoid_configuration[:deleted_value] = "deleted" if options[:column_type] == "string"

  paranoid_configuration.merge!(options) # user options

  unless %w[time boolean string].include? paranoid_configuration[:column_type]
    raise ArgumentError,
          "'time', 'boolean' or 'string' expected for :column_type option," \
          " got #{paranoid_configuration[:column_type]}"
  end

  return if paranoid?

  include ActsAsParanoid::Core

  # Magic!
  default_scope { where(paranoid_default_scope) }

  define_deleted_time_scopes if paranoid_column_type == :time
end
paranoid?() click to toggle source
# File lib/acts_as_paranoid.rb, line 11
def paranoid?
  included_modules.include?(ActsAsParanoid::Core)
end
validates_as_paranoid() click to toggle source
# File lib/acts_as_paranoid.rb, line 15
def validates_as_paranoid
  include ActsAsParanoid::Validations
end