module ActsAsParanoid::Core::ClassMethods
Constants
- DESTROYING_ASSOCIATION_DEPENDENCY_TYPES
Public Class Methods
extended(base)
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 10 def self.extended(base) base.define_callbacks :recover end
Public Instance Methods
after_recover(method)
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 18 def after_recover(method) set_callback :recover, :after, method end
before_recover(method)
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 14 def before_recover(method) set_callback :recover, :before, method end
boolean_type_not_nullable?()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 61 def boolean_type_not_nullable? paranoid_column_type == :boolean && !paranoid_configuration[:allow_nulls] end
delete_all(conditions = nil)
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 41 def delete_all(conditions = nil) where(conditions) .update_all(["#{paranoid_configuration[:column]} = ?", delete_now_value]) end
delete_all!(conditions = nil)
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 37 def delete_all!(conditions = nil) without_paranoid_default_scope.delete_all!(conditions) end
delete_now_value()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 85 def delete_now_value case paranoid_configuration[:column_type] when "time" then Time.now when "boolean" then true when "string" then paranoid_configuration[:deleted_value] end end
dependent_associations()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 79 def dependent_associations reflect_on_all_associations.select do |a| DESTROYING_ASSOCIATION_DEPENDENCY_TYPES.include?(a.options[:dependent]) end end
only_deleted()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 26 def only_deleted if string_type_with_deleted_value? without_paranoid_default_scope .where(paranoid_column_reference => paranoid_configuration[:deleted_value]) elsif boolean_type_not_nullable? without_paranoid_default_scope.where(paranoid_column_reference => true) else without_paranoid_default_scope.where.not(paranoid_column_reference => nil) end end
paranoid_column()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 65 def paranoid_column paranoid_configuration[:column].to_sym end
paranoid_column_reference()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 73 def paranoid_column_reference "#{table_name}.#{paranoid_column}" end
paranoid_column_type()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 69 def paranoid_column_type paranoid_configuration[:column_type].to_sym end
paranoid_default_scope()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 46 def paranoid_default_scope if string_type_with_deleted_value? all.table[paranoid_column].eq(nil) .or(all.table[paranoid_column].not_eq(paranoid_configuration[:deleted_value])) elsif boolean_type_not_nullable? all.table[paranoid_column].eq(false) else all.table[paranoid_column].eq(nil) end end
recovery_value()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 93 def recovery_value if boolean_type_not_nullable? false else nil end end
string_type_with_deleted_value?()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 57 def string_type_with_deleted_value? paranoid_column_type == :string && !paranoid_configuration[:deleted_value].nil? end
with_deleted()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 22 def with_deleted without_paranoid_default_scope end
Protected Instance Methods
define_deleted_time_scopes()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 103 def define_deleted_time_scopes scope :deleted_inside_time_window, lambda { |time, window| deleted_after_time((time - window)).deleted_before_time((time + window)) } scope :deleted_after_time, lambda { |time| only_deleted .where("#{table_name}.#{paranoid_column} > ?", time) } scope :deleted_before_time, lambda { |time| only_deleted .where("#{table_name}.#{paranoid_column} < ?", time) } end
without_paranoid_default_scope()
click to toggle source
# File lib/acts_as_paranoid/core.rb, line 118 def without_paranoid_default_scope scope = all unless scope.unscope_values.include?({ where: paranoid_column }) # unscope avoids applying the default scope when using this scope for associations scope = scope.unscope(where: paranoid_column) end scope end