Active Record는 Ruby 메서드를 SQL 쿼리로 자동 변환하여 데이터베이스와 소통합니다. Project.all
이나 Todo.find(id)
같은 Ruby 코드가 내부적으로 적절한 SQL 쿼리로 변환되며, create
, update
, destroy
등 데이터 조작에도 동일하게 적용됩니다. 이 기능은 모델의 상속 구조 덕분인데, 모든 Rails 모델은 ApplicationRecord
를, ApplicationRecord
는 다시 ActiveRecord::Base
를 상속받습니다. ActiveRecord::Base
에 정의된 .all
, .find
, .where
등의 핵심 메서드들이 자식 모델에 자동으로 상속되어 별도 코드 없이 데이터베이스 기능을 활용할 수 있습니다.
Active Record는 또한 데이터베이스 스키마 변경을 위한 마이그레이션 기능을 제공합니다. 비디오에서는 Todo
모델에 completed
(boolean)와 priority
(integer) 필드를, Project
모델에 active
(boolean) 필드를 추가하는 과정을 시연했습니다. bin/rails generate migration
명령어로 field:type
형식으로 컬럼을 정의하며, 마이그레이션 파일에서 default
값이나 null: false
같은 제약 조건을 설정해 데이터 무결성을 보장합니다. 스키마 업데이트 후 bin/rails db:migrate
를 실행하면 Active Record는 추가 설정 없이 새로운 필드를 인식합니다.
새 필드를 활용한 데이터 쿼리는 매우 직관적입니다. Todo.where(completed: false).order(priority: :desc)
처럼 Ruby 메서드 체이닝으로 복잡한 쿼리를 쉽게 구성할 수 있습니다. bin/rails console
에서 쿼리 실행 시 Active Record가 생성한 SQL 쿼리를 확인할 수 있으며, .to_sql
메서드로 실행 전 SQL을 미리 볼 수 있습니다. 매우 특정한 SQL 쿼리가 필요할 경우 find_by_sql
을 사용하여 원시 SQL을 직접 실행할 수도 있으나, SQL 인젝션과 같은 보안 문제에 대한 개발자의 각별한 주의가 필요합니다.