💎
ActiveRecord
ORM — オブジェクトでデータベースを操作
ActiveRecordはRailsのORM(Object-Relational Mapping)ライブラリで、データベーステーブルの行(row)をRubyオブジェクトにマッピングします。
基本CRUD:
# Create
post = Post.create(title: 'タイトル', content: '内容')
# Read
Post.find(1) # IDで検索
Post.where(status: 'published') # 条件検索
Post.order(created_at: :desc) # ソート
# Update
post.update(title: '新タイトル')
# Delete
post.destroy
クエリインターフェース:
where、order、limit、offset— チェーン可能includes、joins— 関連テーブルのジョインgroup、having、count、sum— 集計find_by、find_or_create_by— 便利メソッド
コールバック: before_save、after_create等のライフサイクルイベント
バリデーション: validates :title, presence: true 等
構造ダイアグラム
Ruby (ActiveRecord)
Post.find(1)
Post.where(status: 'published')
Post.create(title: 'Hello')
post.update(title: 'New')
post.destroy
SQL (自動変換)
SELECT * FROM posts WHERE id = 1
SELECT * FROM posts WHERE status = 'published'
INSERT INTO posts (title) VALUES ('Hello')
UPDATE posts SET title = 'New' WHERE id = 1
DELETE FROM posts WHERE id = 1
Convention (自動マッピング):
class Post
→
posts テーブル
post.title
→
title カラム
post.id
→
主キー (自動)
ポイント: <strong>RubyメソッドがSQLに自動変換</strong> — オブジェクト指向でDBを操作
キーポイント
1
モデルクラス定義 — class Post < ApplicationRecord(ApplicationRecord < ActiveRecord::Base)
2
テーブル規約: Postモデル → postsテーブル自動マッピング
3
Post.new / Post.createで新レコード生成
4
Post.find / Post.whereでレコード照会 → SQL自動生成
5
post.update / post.saveでレコード修正
6
post.destroyでレコード削除
メリット
- ✓ SQLなしでRubyでDB操作
- ✓ クエリチェーンで直感的なデータ取得
- ✓ マイグレーションでスキーマバージョン管理
- ✓ DB種類に依存しない(SQLite、PostgreSQL、MySQL)
デメリット
- ✗ 複雑なクエリはSQLの方が効率的
- ✗ N+1問題に注意が必要
- ✗ 大量データ処理時メモリ問題
- ✗ 抽象化によるパフォーマンスオーバーヘッド
ユースケース
全てのRailsアプリケーションのデータアクセス
CRUD実装
複雑な検索/フィルタ/ソート
データバリデーション
関連(Association)管理