ActsAsParanoid/acts_as_paranoid
65.6
Adequate · 19 September 2026
455
lines of production code
Ruby
primary language
1
measurement over time
What this system is
ActsAsParanoid is a Ruby gem that provides soft-delete functionality for ActiveRecord models, allowing records to be marked as deleted via a timestamp column rather than being permanently removed. It manages the lifecycle of these records through features like recovery, configurable dependent associations, and scoped queries that can optionally include deleted items. The library ensures compatibility across modern Rails versions by maintaining a robust test suite and modular internal structure.
Features
Initial release of ActsAsParanoid gem
This commit introduces the core library for the ActsAsParanoid gem, enabling soft-delete functionality for ActiveRecord models. Users can now call \acts\_as\_paranoid\ on their models to mark records as deleted via a \deleted\_at\ column (supporting time, boolean, or string types) rather than permanently removing them. The implementation includes a default scope to filter out deleted records, configurable options for dependent association recovery and double-tap destruction, and integration with ActiveRecord's callback and reflection systems to handle soft-deleted states transparently.
lib · high confidence
Behavioural changes
ActsAsParanoid 0.11.0: Refined soft-delete logic and :with\_deleted association support
This release restructures the gem into modular files (core, associations, validations, etc.) and introduces a :with\_deleted option for belongs\_to associations, allowing them to include soft-deleted records while preserving automatic inverse association detection. It adds a recover! method with before\_recover/after\_recover callbacks, a double\_tap\_destroys\_fly option to hard-delete on a second destroy call, and a validates\_uniqueness\_of\_without\_deleted validator. The default scope logic is refined to handle string, boolean, and nullable column types correctly, and destroy! now raises ActiveRecord::RecordNotDestroyed on failure.
_lib/acts\_as\paranoid · high confidence
ActsAsParanoid now targets Rails 6.1+ and Ruby 3.1+
This release drops support for older versions of Rails (5.2, 6.0) and Ruby (2.4–3.0). The gem now officially supports Rails 6.1 through 8.1 and Ruby 3.1 through 3.4. Users on older environments must continue using an older version of the gem.
(repo-wide) · high confidence
Test coverage
Added integration tests for paranoid has\_many :through associations; Added legacy test suite for paranoid model behaviors; Establishes centralized test infrastructure and coverage.
Dependencies
Added Appraisal gemfiles for Rails 7.2, 8.0, and 8.1
The project now includes dedicated Appraisal gemfiles to support testing against Rails 7.2.0, 8.0.0, and 8.1.0. These new configuration files (active\_record\_72.gemfile, active\_record\_80.gemfile, and active\_record\_81.gemfile) allow the library to be validated against these specific versions of ActiveRecord and ActiveSupport, ensuring compatibility with newer Rails releases.
gemfiles · high confidence
Update to support Rails 7.2 and 8.0
The gem now requires Ruby 3.2 or higher and targets ActiveRecord and ActiveSupport versions 7.2 through 8.1. Development dependencies have been updated to include RuboCop 1.90, SimpleCov 1.2, and RDoc 8.0, while the Gemfile now explicitly pins SQLite3 and JRuby-compatible RBS versions for the development environment.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Baseline
- First survey — no prior run to compare against. CAI 66.
Lenses
- Code Health 100
- Architecture 69
- Maturity 53
- Readiness 74
- Security 96
Changes since last survey
- 300 commits — 280 feature/other, 20 fixes
By area
- (root) — 116 commits
- (repo) — 111 commits
- .github/workflows — 23 commits
- lib/acts_as_paranoid — 20 commits
- test/test_associations.rb — 7 commits
- test/legacy — 5 commits
- test/test_helper.rb — 5 commits
- test/test_core.rb — 4 commits
- lib/acts_as_paranoid.rb — 3 commits
- test/integration — 2 commits
- .github/dependabot.yml — 1 commit
- gemfiles/active_record_52.gemfile — 1 commit
- gemfiles/active_record_edge.gemfile — 1 commit
- test/test_default_scopes.rb — 1 commit
Notable commits
- fix: Fix CI Badge
- fix: Fix Performance/CollectionLiteralInLoop offense
- fix: Fix Performance/RedundantMerge offense
- fix: Fix Style/FrozenStringLiteralComment offenses
- fix: Fix new Style/SuperArguments offense
- fix: Fix rubocop error
- fix: Fix rubocop error
- fix: Fix rubocop errors
- fix: Fix: Change dependencies from 7.0 to 7.1
- fix: Merge pull request #256 from ActsAsParanoid/fix-exe-bit
- fix: Merge pull request #277 from ActsAsParanoid/issue-232-fix-association-building
- fix: Merge pull request #320 from ActsAsParanoid/fix-new-rubocop-offense
- fix: Merge pull request #329 from fatkodima/fix-ci
- fix: Merge pull request #330 from fatkodima/fix-ar-early-loading
- fix: Merge pull request #333 from ActsAsParanoid/fix-rubocop-offense
- fix: Merge pull request #350 from tagliala/chore/fix-ci-badge
- fix: Merge pull request #362 from ActsAsParanoid/fix-build
- fix: Merge pull request #365 from ActsAsParanoid/fix-rubocop-offenses
- fix: Revert "Fix rubocop error"
- fix: fix: wrong version"
- …and 280 more
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
ActsAsParanoid/acts_as_paranoid was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 19 September 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 4b30f2ef17b2cc697e95b69ba3278fffa327b4c3 — the exact code this score is about.
- Scored under rubric-2026.09.15 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-b51f968c9b10.