💎

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

クエリインターフェース:

  • whereorderlimitoffset — チェーン可能

  • includesjoins — 関連テーブルのジョイン

  • grouphavingcountsum — 集計

  • find_byfind_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)管理