Active Record 기초
ORM의 기본을 알아봅니다
Active Record 기초은(는) CoddyKit의 무료 Ruby Academy 강의입니다. 이것은 4개 중 1번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Ruby Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
Active Record란 무엇인가요
Active Record는 Rails의 객체-관계 매핑(ORM) 계층입니다. Ruby 객체를 데이터베이스 테이블의 행과 연결하므로 원시 SQL 대신 객체를 사용해 작업할 수 있습니다.
- 클래스는 테이블에 대응합니다.
- 인스턴스는 행에 대응합니다.
- 속성은 열에 대응합니다.
모델 정의하기
모델은 ApplicationRecord를 상속하는 클래스입니다(ActiveRecord::Base를 상속합니다). 관례에 따라 User 모델은 자동으로 users 테이블에 연결됩니다.
class User < ApplicationRecord
end
# Maps to the 'users' table
# Columns become attributes automatically설정보다 관례
Active Record는 이름 지정 관례를 사용하므로 설정 코드를 적게 작성해도 됩니다.
- 클래스 이름은 단수형이며 CamelCase를 사용합니다. 예:
User - 테이블 이름은 복수형이며 스네이크 표기법을 사용합니다. 예:
users - 기본 키는 기본적으로
id입니다.
관례를 따르면 대부분의 연결 작업이 자동으로 처리됩니다.
레코드 생성하기
create로 행을 만들거나, 먼저 빌드한 다음 save할 수 있습니다. create는 한 번의 호출로 인스턴스를 만들고 저장합니다.
user = User.create(name: "Ada", email: "ada@example.com")
# Or in two steps:
other = User.new(name: "Linus")
other.email = "linus@example.com"
other.save레코드 조회하기
조회 메서드로 레코드를 가져옵니다.
- 기본 키로 조회하는
User.find(1)은 레코드가 없으면 오류를 발생시킵니다. - 임의의 열로 조회하는
User.find_by(email: 'a@b.com')은 레코드가 없으면 nil을 반환합니다. - 모든 행을 조회하는
User.all입니다. User.first와User.last입니다.
user = User.find(1)
admin = User.find_by(role: "admin")
everyone = User.all레코드 수정하기
속성을 변경한 다음 save하거나, update를 사용해 값을 할당하고 함께 저장할 수 있습니다. update는 유효성 검사 결과에 따라 true 또는 false를 반환합니다.
user = User.find(1)
user.update(name: "Ada Lovelace")
# Equivalent two-step form:
user.name = "Ada Lovelace"
user.save레코드 삭제하기
destroy로 행을 제거하면 콜백과 연관 관계가 실행되고, delete를 사용하면 직접 SQL을 실행하여 콜백을 건너뜁니다. 콜백을 우회해야 할 이유가 없다면 destroy를 우선 사용하세요.
user = User.find(1)
user.destroy
# Bulk destroy:
User.where(active: false).destroy_all속성과 변경 추적
Active Record는 저장되지 않은 변경 사항을 추적합니다. changed?, changes, name_was와 같은 메서드로 저장하기 전에 변경된 항목을 확인할 수 있습니다. 이는 콜백과 로그 기록에 유용합니다.
user = User.find(1)
user.name = "New Name"
puts user.changed? # true
puts user.name_was # old value
puts user.changes.inspectschema.rb 파일
Active Record는 모델이 아니라 데이터베이스에서 테이블 구조를 읽습니다. 현재 구조는 마이그레이션으로 생성되는 db/schema.rb에 반영됩니다. 이 파일을 직접 편집하는 일은 거의 없습니다.
SQL은 어디로 가나요
Active Record는 내부적으로 메서드 호출을 SQL로 변환합니다. User.find(1)은 SELECT * FROM users WHERE id = 1 LIMIT 1이 됩니다. User.where(active: true).to_sql로 생성된 SQL을 확인할 수 있습니다.
sql = User.where(active: true).to_sql
# => SELECT "users".* FROM "users" WHERE "users"."active" = TRUEORM은 왜 도움이 되나요
Active Record는 다음 기능을 제공합니다.
- 데이터베이스에 종속되지 않는 코드(PostgreSQL, MySQL, SQLite)
- 매개변수화된 질의를 통한 SQL 삽입 공격 방지
- 읽기 쉽고 객체 지향적인 데이터 접근
특수한 경우에만 원시 SQL을 직접 사용하면 됩니다.
간단히 확인하기
Active Record 기초 내용을 얼마나 이해했는지 확인해 보세요.
복습: Active Record 기초
ORM의 기본을 배웠습니다.
- 클래스는 테이블에, 인스턴스는 행에 대응합니다.
- 설정보다 관례를 적용해 이름을 처리합니다.
- CRUD는
create,find/find_by,update,destroy로 수행합니다. - 변경 추적으로 저장되지 않은 변경 사항을 확인합니다.
- Active Record가 안전한 SQL을 대신 생성합니다.
다음으로 마이그레이션을 사용해 데이터베이스 스키마를 관리합니다.
자주 묻는 질문
“Active Record 기초” 강의는 무료인가요?
네 — “Active Record 기초” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Ruby Academy 강의 전체를 잠금 해제할 수 있습니다. Ruby Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“Active Record 기초”에서 뭘 배우나요?
ORM의 기본을 알아봅니다 브라우저에서 직접 실행하는 실습 코드로 Ruby Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Ruby Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Ruby Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 1번째 강의입니다.
“Active Record 기초” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Ruby Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Ruby Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.