피드로 돌아가기
Self Referential Associations in Rails - simpler than it sounds
Dev.toDev.to
Backend

Self Referential Association을 통한 단일 테이블 기반 계층 구조 설계

Self Referential Associations in Rails - simpler than it sounds

Shamila TP2026년 5월 4일2beginner

Context

서로 다른 모델 간의 관계 설정 방식으로는 동일 엔티티 내의 계층 관계를 표현하는 데 한계 존재. 별도의 테이블 생성 없이 단일 테이블 내에서 레코드 간 참조 관계를 구축해야 하는 요구사항 발생.

Technical Solution

  • 동일 테이블 내 외래 키로 동작하는 manager_id 컬럼 정의를 통한 자기 참조 구조 설계
  • Rails의 기본 컨벤션을 벗어난 관계 설정을 위해 class_name 옵션으로 참조 대상 모델을 Employee로 명시
  • foreign_key 옵션을 통해 Rails가 추측하는 기본 키 대신 실제 정의된 manager_id를 사용하도록 강제
  • belongs_tohas_many 관계의 양방향 설정을 통한 상위 관리자 및 하위 부하 직원 조회 경로 확보
  • optional: true 설정을 통해 최상위 노드(Root Node)의 Nullable 제약 조건 해결

1. 동일 엔티티 내 계층 구조(댓글-답글, 카테고리-하위카테고리) 필요 시 Self Referential Association 검토

2. Rails 사용 시 기본 컨벤션과 다른 관계명 설정 시 `class_name`과 `foreign_key` 명시적 선언 여부 확인

3. 최상위 레코드의 존재를 위해 외래 키 컬럼의 Null 허용 여부 설정 확인

원문 읽기