Sha256: 782f6dad5beb5603848592e3282d2d07bc0afc1ae7e6dedcfef88ae12a3df447

Contents?: true

Size: 1.75 KB

Versions: 5

Compression:

Stored size: 1.75 KB

Contents

Explicit soft deletion for ActiveRecord via deleted_at + callbacks and optional default scope.<br/>
Not overwriting destroy or delete.

Install
=======
    gem install soft_deletion

Usage
=====
    require 'soft_deletion'

    class User < ActiveRecord::Base
      has_soft_deletion :default_scope => true

      before_soft_delete :validate_deletability # soft_delete stops if this returns false
      after_soft_delete :send_deletion_emails

      has_many :products
    end

    # soft delete them including all dependencies that are marked as :destroy, :delete_all, :nullify
    user = User.first
    user.products.count == 10
    user.soft_delete!
    user.deleted? # true

    # use special with_deleted scope to find them ...
    user.reload # ActiveRecord::RecordNotFound
    User.with_deleted do
      user.reload # there it is ...
      user.products.count == 0
    end

    # soft undelete them all
    user.soft_undelete!
    user.products.count == 10

    # soft delete many
    User.soft_delete_all!(1,2,3,4)

TODO
====
 - nullify should use update_all on has_many on soft_delete (performance)
 - has_many :through should delete join associations on soft_delete
 - cascading soft_deletes should use the same timestamp for easy reverts

Authors
=======

### [Contributors](https://github.com/grosser/soft_deletion/contributors)
 - [Michel Pigassou](https://github.com/Dagnan)
 - [Steven Davidovitz](https://github.com/steved555)
 - [PikachuEXE](https://github.com/PikachuEXE)
 - [Noel Dellofano](https://github.com/pinkvelociraptor)
 - [Oliver Nightingale](https://github.com/olivernn)

[Zendesk](http://zendesk.com)<br/>
michael@grosser.it<br/>
License: MIT<br/>
[![Build Status](https://travis-ci.org/grosser/soft_deletion.png)](https://travis-ci.org/grosser/soft_deletion)

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
soft_deletion-0.5.6 Readme.md
soft_deletion-0.5.5 Readme.md
soft_deletion-0.5.4 Readme.md
soft_deletion-0.5.3 Readme.md
soft_deletion-0.5.2 Readme.md