Active Record는 Ruby on Rails의 핵심 ORM(Object-Relational Mapping) 도구로, Ruby 코드와 관계형 데이터베이스 간의 상호작용을 추상화합니다. 본 강연은 Active Record의 내부 작동 원리를 다음 주요 구성 요소를 통해 분석합니다.
1. Active Record의 통합 및 구성
- Gemfile: Rails 앱 생성 시
Gemfile에 Rails Gem이 포함되며, Active Record는 Rails Gem의 필수 종속성으로 로드됩니다.Gemfile.lock은 Gem 버전 일관성을 보장합니다. - 기본 구성 (
application.rb):require 'rails/all'은 Active Record를 포함한 모든 Rails 모듈을 로드합니다. Active Record는 Railtie를 통해 Rails 앱 부팅 과정에 통합되어 핵심 ORM 기능을 제공합니다. - 데이터베이스 구성 (
database.yml): 이 파일은adapter(예:sqlite3) 및 데이터베이스 경로와 같은 연결 정보를 정의하며,schema_migrations테이블은 마이그레이션 적용 상태를 추적합니다.
2. 모델의 동작 원리
- 모델 상속: Rails 모델은
ApplicationRecord를 상속하며, 이는ActiveRecord::Base를 상속하여 Active Record 모델 기능을 부여받습니다. - 데이터 유효성 검사 (Validation) 흐름:
create!호출 시, Active Record는ActiveRecord::Persistence::ClassMethods#create에서 시작하여ActiveRecord::Validations및ActiveModel::Validations모듈을 거쳐ActiveModel::Validations::PresenceValidator#validate_each에서 최종 유효성 검사 로직을 실행합니다. - 데이터베이스 저장 (Persistence) 흐름: 유효성 검사를 통과한 레코드는
ActiveRecord::Persistence#save에서 시작하여create_or_update,create_record를 거쳐insert_record메서드 내부의connection.insert를 통해 데이터베이스에 삽입됩니다.connection객체는database.yml에 지정된 어댑터(예:SQLite3Adapter) 인스턴스입니다.
이러한 내부 흐름 이해는 Rails의 “마법”을 해독하고, 데이터 처리 문제를 효과적으로 진단하며 해결하는 데 필수적인 지식입니다.