class SoftDeletion::Dependency

Attributes

association_name[R]
record[R]

Public Class Methods

new(record, association_name) click to toggle source
# File lib/soft_deletion/dependency.rb, line 5
def initialize(record, association_name)
  @record = record
  @association_name = association_name
end

Public Instance Methods

execute_soft_delete(method, args) click to toggle source
# File lib/soft_deletion/dependency.rb, line 10
def execute_soft_delete(method, args)
  case association.options[:dependent]
  when :nullify
    dependency.update_all(association.foreign_key => nil)
  when :delete_all
    dependency.update_all(dependency.mark_as_soft_deleted_sql)
    true
  else
    dependencies.all? { |dep| dep.send(method, *args) }
  end
end
soft_undelete!(limit) click to toggle source
# File lib/soft_deletion/dependency.rb, line 22
def soft_undelete!(limit)
  klass.with_deleted do
    dependencies.reject { |m| m.deleted_at.to_i < limit.to_i }.each(&:soft_undelete!)
  end
end

Protected Instance Methods

association() click to toggle source
# File lib/soft_deletion/dependency.rb, line 34
def association
  record.class.reflect_on_association(association_name.to_sym)
end
dependencies() click to toggle source
# File lib/soft_deletion/dependency.rb, line 42
def dependencies
  Array.wrap(dependency)
end
dependency() click to toggle source
# File lib/soft_deletion/dependency.rb, line 38
def dependency
  record.send(association_name)
end
klass() click to toggle source
# File lib/soft_deletion/dependency.rb, line 30
def klass
  association.klass
end