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의 “마법”을 해독하고, 데이터 처리 문제를 효과적으로 진단하며 해결하는 데 필수적인 지식입니다.