쿠폰함 어드민 구현 및 JSON 처리 난제 해결

Source

  • Field Notes/ReturnZero/Daily Notes/Day 140. 2021-11-17.md

Summary

이 노트는 쿠폰함(Coupon Box) 어드민 기능 구현 과정에서 발생한 Rails JSON 컬럼 처리 문제를 기록한다. 기존 코드 참고가 어려워 삽질을 겪은 끝에 ActiveRecord::StoreAttribute를 활용하여 JSON 내 항목을 접근 가능하도록 해결했다. 특히 심볼 enum 저장 문제와 타임스탬프 형식 변환 문제를 before_validation 및 초기화 시 정규화 함수를 통해 우회했다. 또한 라모스와 함께 쿠폰 데이터 구조(coupon_info vs coupon)의 네이밍과 GoodProperties에 Type 필드 추가 등 재설계 방향에 대해 논의했으나 결론은 미정이다.

Key Points

  • Rails JSON 컬럼 처리: ActiveRecord::StoreAttribute를 사용하여 JSON 객체 내 항목(plan_end_at, coin_count 등)을 뷰에서 직접 수정 가능하도록 구현.
  • 데이터 형식 정규화: 심볼 enum이 문자열로 저장되는 문제와 타임스탬프/문자열 변환 문제를 normalize_good_properties_values(저장 전)와 parse_good_properties_values(로드 후) 함수로 해결.
  • 쿠폰 구조 논의: coupon_info/coupon 네이밍에 대한 불만과 GoodPropertiesType 필드 추가 또는 CouponItem으로 재설계하는 두 가지 안을 검토 중.
  • 미해결/후속: 중복지급 로직, CSV 업로드를 통한 쿠폰 지급 기능 구현 필요.