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