Module: DeleteSoftly::InstanceMethods

Defined in:
lib/instance_methods.rb

Instance Method Summary collapse

Instance Method Details

#destroyObject

Custom destroy method for models using delete_softly



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/instance_methods.rb', line 5

def destroy 
  if persisted?
    with_transaction_returning_status do
      _run_destroy_callbacks do
        update_attributes(:deleted_at => Time.now.utc)
      end
    end
  end

  @destroyed = true
  freeze
end

#reviveObject Also known as: undelete, undestroy

Revive a destroyed item. For a model like: class Post < ActiveRecord::Base delete_softly end Then the following can be done: p = Post.find(1) p.destroy p = Post.find(1) # raise error p = Post.with_deleted.find(1) # Original object but with deleted_at attribute set p.revive #=> deleted_at => nil p = Post.find(1) # business as usual If papertrail is used for this model it will not store a copy



30
31
32
33
34
35
36
37
38
39
# File 'lib/instance_methods.rb', line 30

def revive
  # Disable paper_trail when it is present and active
  if self.class.respond_to?(:paper_trail_active) && self.class.paper_trail_active
    self.class.paper_trail_off
    update_attribute :deleted_at, nil
    self.class.paper_trail_on
  else
    update_attribute :deleted_at, nil
  end
end