You’ve probably done the whole
deleted_at thing to mark records as deleted without actually deleting them from the database. That strategy is fraught for a few reasons.
In this post, Brandur Leach proposes an alternative strategy with the following endorsement:
Speaking from 30,000 feet, programming is all about tradeoffs. However, this is one of those rare places where as far as I can tell the cost/benefit skew is so disproportionate that the common platitude falls flat.
Anytime your fellow developer can make that statement in earnest, whatever they’re talking about is worth a try…