The paranoia gem from frankly talented Radar is what you were looking for.
This is essentially a rewriting of acts_as_paranoid (and uses many of the same conventions), but is smaller, faster, and compatible with Rails 3 and 4.
Fulfills both of your requests:
Automatically sets the deleted_at when calling the destroy method on an object whose class includes acts_as_paranoid .
Automatically sets the condition for any queries that provide deleted_at IS NULL unless you include with_deleted in the query chain.
Can't say enough good things about the library or the radar.
Bonus: its documentation may be the best in "business."
source share