Sha256: 04ec2896d5ee376dd3df43eba9815842d832def73a582b68b894ffa346bad268
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
module SoftDeletion class Dependency attr_reader :record, :association_name def initialize(record, association_name) @record = record @association_name = association_name end def soft_delete! return unless can_soft_delete? if nullify? nullify_dependencies else dependencies.each(&:soft_delete!) end end def soft_undelete! return unless can_soft_delete? klass.with_deleted do dependencies.each(&:soft_undelete!) end end protected def nullify? association.options[:dependent] == :nullify end def nullify_dependencies dependencies.each do |dependency| dependency.update_attribute(association.options[:foreign_key], nil) end end def can_soft_delete? klass.method_defined? :soft_delete! end def klass association.klass end def association record.class.reflect_on_association(association_name.to_sym) end def dependencies Array.wrap(record.send(association_name)) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
soft_deletion-0.4.2 | lib/soft_deletion/dependency.rb |