版本 VS 批准
发布: (2026年3月23日 GMT+8 18:16)
2 分钟阅读
原文: Dev.to
Source: Dev.to
问题
今天我在一个看似简单的 “一条记录在 #index 中未显示” 的 bug‑fix 任务中遇到了一个棘手的问题。
数据情况
Task.pluck(:project_version_id, :is_actual)
#=> [
# [1, true],
# [nil, true]
# ]既有版本化的记录也有非版本化的记录可以是 :actual。这可能吗?
需要考虑的问题
- “草稿” 数据是否会以某种 “候场区” 的形式持久化?
- 更重要的是——访问可能的草稿数据,还是访问可能的最新已批准/实际版本?
- 哪些操作会产生新版本?
根据答案,你可能会得到以下两种系统之一。
可能的系统

对开发者的影响
关键区别在于未版本化数据的意义和重要性。
- 版本化情况:常规数据是 实际 的,需要特殊访问来获取历史版本数据。
- 审批模式:未版本化数据的重要性较低,因为它们尚未 批准。
自然地,审批工作流会更难以推理,并且需要仔细开发,以传达普通的 project.tasks.actual 并不完全等同于 project.last_approved_version.tasks。