버전 vs 승인
발행: (2026년 3월 23일 PM 07:16 GMT+9)
2 분 소요
원문: Dev.to
Source: Dev.to
문제
오늘 나는 겉보기엔 간단한 “#index에 레코드 하나가 보이지 않는다”는 버그 수정 작업에서 까다로운 문제를 마주했다.
데이터 상황
Task.pluck(:project_version_id, :is_actual)
#=> [
# [1, true],
# [nil, true]
# ]
버전이 있는 레코드와 버전이 없는 레코드 모두 :actual일 수 있다. 이것이 맞을까?
고려해야 할 질문
- “드래프트” 데이터가 어느 정도 “대기실”에 저장되는 경우가 있을까?
- 가능한 드래프트 데이터를 접근하는 것이 더 중요한가, 아니면 최신 승인/실제 버전에 접근하는 것이 더 중요한가?
- 어떤 작업이 새로운 버전을 생성하게 하는가?
답변에 따라 두 가지 시스템 중 하나가 만들어질 수 있다.
가능한 시스템

개발자에게 주는 시사점
핵심 차이는 버전이 없는 데이터의 의미와 중요성이다.
- 버전 관리된 경우: 일반 데이터가 실제 데이터이며, 과거 버전 데이터에 접근하려면 별도의 처리가 필요하다.
- 승인 패턴: 버전이 없는 데이터는 아직 승인되지 않았기 때문에 중요도가 낮다.
당연히 승인 워크플로우는 이해하기 더 복잡하고, project.tasks.actual이 project.last_approved_version.tasks와 정확히 동일하지 않다는 점을 명확히 전달하기 위해 신중한 개발이 필요하다.