error on sitetrack_id: 21354 - undefined method `untrashed?' for nil
Validation: 725fbb66-a1d4-4df0-a4a0-19508633ecf4
Verdict: APPROVED#
Completeness#
| Plan Item | Status | Evidence |
|---|---|---|
_do_assign_editing_to_editing_entity early-return 의 self.editing.untrashed? 를 self.editing&.untrashed? 로 변경 |
DONE | app/models/concerns/finalization/editing_entity.rb: line 39 에서 return if self.editing_id.present? && self.editing.untrashed? -> return if self.editing_id.present? && self.editing&.untrashed? 로 한 줄만 변경됨 |
orphan editing_id 회귀 방지 스펙 추가 |
DONE | spec/models/concerns/finalization/editing_entity_spec.rb: lines 44-58 에서 Editing.where(id: orphan_editing.id).delete_all 로 하드 삭제 시뮬레이션 후 assign_editing_to_editing_entity 가 예외 없이 신규 editing 을 생성하는지 검증 |
Acceptance Criteria#
| Criterion | Status | Evidence |
|---|---|---|
editing_entity.rb 한 파일, 단 한 줄 변경만 포함 |
PASS | 프로덕션 코드 diff 는 app/models/concerns/finalization/editing_entity.rb 의 line 39 한 줄만 수정. 스펙 파일은 테스트 추가이므로 별개 |
grep -n 'self.editing.untrashed?' ... 결과 0건 |
PASS (diff 기준) | diff hunk 에서 삭제되는 라인이 유일한 self.editing.untrashed? 발생 위치였음. 남는 참조는 line 42 의 self.editing&.untrashed? (safe navigation) 뿐 |
CreateSitetrackEditingEntitiesWorker#perform orphan 경로 정상 종료 |
Cannot verify from diff -- requires runtime check | 워커 진입점 파일은 diff 에 포함되지 않음. 다만 신규 스펙이 orphan 케이스에서 not_to raise_error 및 새 Editing 생성까지 검증하므로 로직상 등가 |
Issues Found#
차단 이슈 없음.
Observations#
- 수정 라인 다음 줄(line 42) 이 이미
self.editing&.untrashed?패턴을 사용하고 있어 일관성 확보됨. - 스펙은
Editing.where(...).delete_all로 하드 삭제를 시뮬레이션하는데, 이는 실제 프로덕션의 purge 경로와 동일한 상태(참조 무효)를 재현하므로 회귀 방지에 적절. - 스펙에서
editing_entity.editing가nil임을 명시적으로 검증(line 54)한 뒤 라이즈 없음/신규 Editing 생성을 확인 -- fix 전 코드였다면NoMethodError로 실패했을 시나리오. - 계획 범위를 벗어난 불필요한 코드 추가는 발견되지 않음.