Audited 使用教程
1. 项目介绍
Audited 是一个 ORM 扩展,用于记录 Rails 模型的所有更改。它不仅可以记录谁进行了更改,还可以保存注释并将更改与相关模型关联起来。Audited 目前支持 Rails 7.2、7.1、7.0、6.1、6.0、5.2 版本,并且经过测试,支持以下 Ruby 版本:2.3、2.4、2.5、2.6、2.7、3.0、3.1、3.2、3.3。Audited 仅支持 ActiveRecord ORM。
2. 项目快速启动
首先,将 Audited 添加到你的 Gemfile 中:
gem "audited"
如果你的项目使用了 require: false
,你需要在初始izers 中添加以下代码:
# config/initializers/audited.rb
require "audited"
Audited::Railtie.insert
接下来,从你的 Rails 应用目录中生成并迁移 audits 表:
rails generate audited:install
rake db:migrate
默认情况下,更改会以 YAML 格式存储。如果你使用 PostgreSQL,可以通过以下命令使用 JSON 列类型:
rails generate audited:install --audited-changes-column-type jsonb
对于使用 UUID 作为主键的用户模型,可以这样定制 audits 表的 user_id 列类型:
rails generate audited:install --audited-user-id-column-type uuid
在模型中使用 Audited:
class User < ActiveRecord::Base
audited
end
现在,每当 User 被创建、更新或销毁时,都会自动创建一个新的审计记录。
3. 应用案例和最佳实践
3.1 记录特定字段
如果你想只记录特定字段的更改,可以这样设置:
class User < ActiveRecord::Base
audited only: [:name, :email]
end
3.2 自定义回调
你可以限制审计的回调动作:
class User < ActiveRecord::Base
audited on: [:update, :destroy]
end
3.3 添加注释
可以为每个审计记录添加注释:
user.update!(name: "Ryan", audit_comment: "Changing name, just because")
3.4 限制存储的审计记录数
可以限制每个模型实例存储的审计记录数:
class User < ActiveRecord::Base
audited max_audits: 5
end
4. 典型生态项目
由于 Audited 是一个广泛使用的审计工具,它经常与其他项目管理、版本控制和安全工具一起使用,例如:
- 使用 Audited 与 Git 仓库同步,记录代码更改与数据库更改的对应关系。
- 结合 Rails 的 Action Cable 实时通知功能,当审计记录创建时,实时通知相关用户。
- 集成至合规性和安全审计系统,用于监控和报告数据更改。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考