DB 모델 구축: User + UserSetting + QT 핵심 모델 4개
ID: a7717af1-e263-4e51-984f-30f5e5843512
## 목표
Rails 8.1.2 프로젝트에 핵심 DB 모델 6개를 TDD로 구축합니다.
## 작업 범위
### 1. Devise 설치 및 User 모델
- `rails generate devise:install` 실행
- User 모델 마이그레이션 (UUID PK): email, nickname, provider, provider_id, role(enum: user/admin), profile_image, phone, notification_enabled, notification_time, current_session_id
- 인덱스: email(unique), [provider, provider_id](unique)
- Devise 모듈: :database_authenticatable, :omniauthable (omniauth_providers: [:google_oauth2, :kakao])
### 2. UserSetting 모델
- user_id(FK unique), timezone(default: Asia/Seoul), language(default: ko), preferred_difficulty(default: 3), auto_next_day(default: true), current_session_id
- User has_one :user_setting
### 3. QtTheme 모델
- title, description, is_default, is_active, total_day, is_ai_generated, generation_status(enum: draft/generating/completed/published), user_id(FK nullable)
- User has_many :qt_themes
### 4. QtContent 모델
- theme_id(FK), day_number, bible_passage, theme_title, content, questions(JSON array), difficulty(default: 3), week_number, reading_passage, estimated_minutes, tags, bible_chapter, bible_verse
- QtTheme has_many :qt_contents
### 5. QtSession 모델
- title, theme_id(FK), creator_id(FK->users), start_date, end_date, total_days, is_public, invite_code(unique 8자), max_participants, status(enum: active/completed/cancelled)
- QtTheme has_many :qt_sessions
### 6. QtParticipant 모델
- session_id(FK), user_id(FK), role(enum: creator/member), is_active, joined_at
- unique index: [session_id, user_id]
- QtSession has_many :qt_participants
## 기술 요구사항
- 모든 테이블 UUID PK (id: :uuid)
- ApplicationRecord에 `self.implicit_order_column = "created_at"` 이미 설정됨
- enum은 Rails 8 방식 사용
- 모델 테스트 (validations, associations, scopes) 작성
- fixtures 작성
## 참고
- docs/migration/index.md §2 데이터 모델 참조
첨부 이미지
이미지 추가 (Ctrl+V로 붙여넣기 또는 클릭)
JPEG, PNG, GIF, WebP / 최대 10MB
활동 로그
-
팀팀리드 상태 변경: 리뷰 → 완료
2026년 03월 02일 01:05:14
-
Ddb-models 상태 변경: 진행 중 → 리뷰
2026년 03월 02일 01:04:03
-
Ddb-models Task #2 완료: QT 핵심 모델 4개 생성 (전체 78 tests 통과)
2026년 03월 02일 01:04:02
상세 보기
## 변경 파일
### 마이그레이션
- `db/migrate/20260302094812_create_qt_themes.rb`
- `db/migrate/20260302094813_create_qt_contents.rb`
- `db/migrate/20260302094814_create_qt_sessions.rb`
- `db/migrate/20260302094815_create_qt_participants.rb`### 모델
- `app/models/qt_theme.rb` - enum, scopes, validations, associations
- `app/models/qt_content.rb` - validations, JSON questions 컬럼
- `app/models/qt_session.rb` - enum, invite_code 자동생성, scopes
- `app/models/qt_participant.rb` - enum, joined_at 자동설정
- `app/models/user.rb` - QT 관련 associations 추가 (qt_themes, qt_participants)
- `app/models/application_record.rb` - UUID 자동생성 조건 단순화### 테스트
- `test/models/qt_theme_test.rb` - 13 tests
- `test/models/qt_content_test.rb` - 13 tests
- `test/models/qt_session_test.rb` - 15 tests
- `test/models/qt_participant_test.rb` - 13 tests
- `test/fixtures/` - qt_themes, qt_contents, qt_sessions, qt_participants### 설정 변경
- `test/test_helper.rb` - parallelize(workers: 1) (SQLite UUID 호환)
- `config/environments/test.rb` - maintain_test_schema = false
- `memory/known-patterns.md` - UUID/JSON/Fixture 패턴 기록## 테스트 결과
78 runs, 144 assertions, 0 failures, 0 errors, 0 skips -
Ddb-models Task #1 완료: Devise + User/UserSetting 모델 생성
2026년 03월 02일 00:57:24
상세 보기
## 변경 파일
- `config/initializers/devise.rb` - Devise 설치
- `db/migrate/20260302094810_create_users.rb` - Users 테이블
- `db/migrate/20260302094811_create_user_settings.rb` - UserSettings 테이블
- `app/models/user.rb` - User 모델 (Devise, enum, validations)
- `app/models/user_setting.rb` - UserSetting 모델
- `app/models/application_record.rb` - UUID 자동생성 콜백 추가
- `test/models/user_test.rb` - 12 tests
- `test/models/user_setting_test.rb` - 10 tests
- `test/fixtures/users.yml` - 3 fixtures
- `test/fixtures/user_settings.yml` - 2 fixtures
- `config/environments/test.rb` - maintain_test_schema = false (SQLite UUID 호환)## 해결한 이슈
- SQLite UUID PK: schema.rb가 uuid 타입을 덤프 못함 → maintain_test_schema=false + 직접 마이그레이션
- UUID 자동생성: SQLite에서 UUID 자동생성 안됨 → ApplicationRecord before_create 콜백
- omniauth-kakao: gem v0.2.0 존재하지 않음 → 임시 비활성화 (Task #3 담당)## 테스트 결과
22 runs, 43 assertions, 0 failures, 0 errors -
Ddb-models Task #1 시작: Devise 설치 + User/UserSetting 모델 생성
2026년 03월 02일 00:47:34
상세 보기
## 작업 계획
- Devise 설치 및 설정
- User 마이그레이션 (UUID PK)
- UserSetting 마이그레이션
- 모델 코드 작성 (validations, enums, associations)
- Fixture 작성
- 테스트 작성 및 실행 -
Ddb-models 티켓 클레임 완료
2026년 03월 02일 00:47:29