피드로 돌아가기
Dev.toBackend
원문 읽기
Self Referential Association을 통한 단일 테이블 기반 계층 구조 설계
Self Referential Associations in Rails - simpler than it sounds
AI 요약
Context
서로 다른 모델 간의 관계 설정 방식으로는 동일 엔티티 내의 계층 관계를 표현하는 데 한계 존재. 별도의 테이블 생성 없이 단일 테이블 내에서 레코드 간 참조 관계를 구축해야 하는 요구사항 발생.
Technical Solution
- 동일 테이블 내 외래 키로 동작하는
manager_id컬럼 정의를 통한 자기 참조 구조 설계 - Rails의 기본 컨벤션을 벗어난 관계 설정을 위해
class_name옵션으로 참조 대상 모델을Employee로 명시 foreign_key옵션을 통해 Rails가 추측하는 기본 키 대신 실제 정의된manager_id를 사용하도록 강제belongs_to와has_many관계의 양방향 설정을 통한 상위 관리자 및 하위 부하 직원 조회 경로 확보optional: true설정을 통해 최상위 노드(Root Node)의 Nullable 제약 조건 해결
실천 포인트
1. 동일 엔티티 내 계층 구조(댓글-답글, 카테고리-하위카테고리) 필요 시 Self Referential Association 검토
2. Rails 사용 시 기본 컨벤션과 다른 관계명 설정 시 `class_name`과 `foreign_key` 명시적 선언 여부 확인
3. 최상위 레코드의 존재를 위해 외래 키 컬럼의 Null 허용 여부 설정 확인