如何自动记录 Rails 应用的数据库模式

2025-06-08

如何自动记录 Rails 应用的数据库模式

我今天要总结一下我的RailsConf 2021演讲回顾。如果你错过了,可以看看第一部分第二部分第三部分!这篇最后的文章回顾了我之前做的一个演示,演示了如何使用一个名为 的 gem 自动记录数据库模式rails-erd

实体关系图 (ERD) 展示了关系数据库模式中的表、列和关系。要直接从数据库为特定版本的代码自动生成 ERD,可以使用rails-erdgem。它通过以下方式实现:

  • 通过活动记录收集数据库元数据(它使用 ActiveRecord 因此它与数据库无关)。
  • 分析模式然后生成 DOT 文件,该文件可以处理成 PDF。
  • 将所有这些捆绑到一个 rake 任务中,您可以在修改架构时使用它来更新 ERD。

在 ERD PDF 文件中,您可以看到数据库架构的详细图表。这有助于分析应用程序的数据模型,并识别诸如可空列和不可空列、列类型、主键、外键以及不同类型的关系等特性。

通过查看架构,您还可以获得其他洞察,例如安全信息。例如,在我的演示中,我能够看到密码记住和重置令牌都以单向摘要的形式存储。因此,即使攻击者能够访问此数据库,我知道他们也无法获取这些机密信息。

您可以在上面的视频片段中观看我在 RailsConf 演讲中的这一部分。如果您想继续学习代码或稍后查阅,我在 Rails 示例应用的 forkerd中创建了一个名为“Rails 示例应用”的分支land-of-apps。点击此处查看:

http://github.com/land-of-apps/sample_app_6th_ed/tree/erd

我很乐意在Discord中听到您的评论、建议和问题!欢迎探索我演示过的另外两种自动生成的代码设计文档,包括:

  1. AppMap 涵盖端到端数据流
  2. Swagger 涵盖 Web 服务和 API
鏂囩珷鏉ユ簮锛�https://dev.to/appmap/how-to-auto-document-the-database-schema-of-your-rails-app-50b
PREV
Quickly learn how new-to-you code works using sequence diagrams
NEXT
自动生成 Java 代码运行时行为的交互式序列图