module ActsAsParanoid
def acts_as_paranoid(options = {})
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 } if options[:column_type] == "string" paranoid_configuration.merge!(deleted_value: "deleted") end 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
def paranoid?
def paranoid? included_modules.include?(ActsAsParanoid::Core) end
def validates_as_paranoid
def validates_as_paranoid include ActsAsParanoid::Validations end