开源项目 Discard 使用教程
discard🃏🗑 Soft deletes for ActiveRecord done right项目地址:https://gitcode.com/gh_mirrors/di/discard
项目介绍
Discard 是一个用于处理 Ruby on Rails 应用中软删除功能的 gem。它提供了一种简单的方式来标记数据库记录为已删除,而不是实际从数据库中删除它们。这样可以确保数据的安全性和可恢复性。
项目快速启动
安装
首先,在你的 Gemfile 中添加以下行:
gem 'discard'
然后运行以下命令来安装 gem:
bundle install
配置
在你的模型中引入 Discard:
class Article < ApplicationRecord
include Discard::Model
end
默认情况下,Discard 会使用 discarded_at
字段来标记记录是否被删除。你需要在你的数据库迁移中添加这个字段:
class AddDiscardedAtToArticles < ActiveRecord::Migration[6.0]
def change
add_column :articles, :discarded_at, :datetime
add_index :articles, :discarded_at
end
end
运行迁移:
rails db:migrate
使用
现在你可以在你的应用中使用 Discard 的功能了:
article = Article.create(title: "Hello World")
article.discard # 软删除
article.discarded? # => true
article.undiscard # 恢复
article.discarded? # => false
应用案例和最佳实践
应用案例
Discard 在许多场景中都非常有用,特别是在需要保留数据历史记录的应用中。例如,在一个博客系统中,当用户删除一篇文章时,你可能不想从数据库中永久删除它,而是将其标记为已删除,以便将来可以恢复或进行数据分析。
最佳实践
- 保持一致性:确保在你的应用中始终使用 Discard 进行软删除操作,而不是直接删除记录。
- 索引
discarded_at
字段:为了提高查询性能,建议在discarded_at
字段上添加索引。 - 使用作用域:在查询时使用
kept
和discarded
作用域来过滤记录,例如:
Article.kept # 只查询未删除的记录
Article.discarded # 只查询已删除的记录
典型生态项目
Discard 可以与其他 Ruby on Rails 生态项目结合使用,以增强功能和性能:
- ActiveAdmin:在 ActiveAdmin 中集成 Discard,以便管理员可以轻松地进行软删除和恢复操作。
- Sidekiq:使用 Sidekiq 进行后台任务处理,例如定期清理已删除的记录。
- Rails Event Store:记录软删除和恢复操作的事件,以便进行审计和追踪。
通过结合这些生态项目,你可以构建一个更加健壮和功能丰富的应用。
discard🃏🗑 Soft deletes for ActiveRecord done right项目地址:https://gitcode.com/gh_mirrors/di/discard