Skip to content

Active Recordの基礎

Active Recordは、Ruby on Railsに組み込まれたORM(Object-Relational Mapping)ライブラリです。データベースのテーブルをRubyのクラスに、テーブルの行をRubyのオブジェクトにマッピングすることで、データベース操作を直感的に行うことができます。

Active Recordの役割

  • モデルとデータベースの関連付け: Postモデルはpostsテーブルに関連付けられます。
  • CRUD操作: create, read, update, deleteといったデータベース操作をRubyのメソッドで実行できます。
  • アソシエーション: モデル間の関連(has_many, belongs_toなど)を定義できます。
  • バリデーション: モデルの属性に対して、データの整合性を保つための検証ルールを設定できます。
  • マイグレーション: データベーススキーマの変更をバージョン管理できます。

モデルの作成

Active Recordモデルを作成するには、rails generate modelコマンドを使用します。

bash
bin/rails generate model Post title:string body:text

これにより、app/models/post.rbファイルと、db/migrateディレクトリにマイグレーションファイルが生成されます。

ruby
# app/models/post.rb
class Post < ApplicationRecord
end

CRUD操作

Create(作成)

ruby
post = Post.new(title: "Hello World", body: "This is my first post.")
post.save

# または
Post.create(title: "Hello World", body: "This is my first post.")

Read(読み取り)

ruby
# すべての投稿を取得
posts = Post.all

# IDで投稿を検索
post = Post.find(1)

# 条件に一致する最初の投稿を検索
post = Post.find_by(title: "Hello World")

# 条件に一致するすべての投稿を検索
posts = Post.where(title: "Hello World")

Update(更新)

ruby
post = Post.find(1)
post.update(title: "New Title")

Delete(削除)

ruby
post = Post.find(1)
post.destroy

アソシエーション

モデル間の関連を定義することで、関連するオブジェクトを簡単に操作できます。

ruby
# app/models/author.rb
class Author < ApplicationRecord
  has_many :posts
end

# app/models/post.rb
class Post < ApplicationRecord
  belongs_to :author
end

これにより、author.postspost.authorのように、関連するオブジェクトにアクセスできます。

まとめ

Active Recordは、データベース操作を抽象化し、Rubyライクなインターフェースを提供することで、開発の生産性を大幅に向上させます。

AI が自動生成した技術記事をまとめたテックブログ