【Rails】ActiveRecordとは?初心者向けにわかりやすく解説

はじめに

Railsを使っていると必ず触れることになるのが「ActiveRecord」です。

ActiveRecordは、Railsでデータベース操作を行うためのORM(Object-Relational Mapping)です。これを使うことで、複雑なSQL文を手書きすることなく、データベースの操作が簡単にできるようになります。

このブログでは、ActiveRecordが何かを簡単に説明し、初心者でもわかりやすくコード例を交えながら解説します。

この記事を読むとわかること

  • ActiveRecordとは何か
  • ActiveRecordを使うとどんな操作が簡単にできるのか
  • よく使うActiveRecordのメソッドとその例
  • 実務で役立つコード例

ActiveRecordとは?

ActiveRecordは、Railsの中で「データベースの操作を簡単にするためのツール」です。具体的には、データベースのテーブルをクラスとして扱い、テーブルのレコードをオブジェクトとして扱うことができます。これにより、SQLを直接書くことなく、データを簡単に操作できます。

例えば、データベースの「users」テーブルにアクセスしたい場合

class User < ApplicationRecord
  # ここにユーザーに関連するメソッドやバリデーションを書く
end

上記のコードは、usersテーブルに対応するUserクラスを定義しています。これで、Userオブジェクトを使って、データベースに保存されているユーザー情報を簡単に操作できるようになります。

ActiveRecordの基本的な使い方

ActiveRecordを使うことで、SQLを直接記述することなく、データベースを操作できます。以下では、よく使うメソッドを紹介します。

1. レコードの作成

新しいレコードをデータベースに保存するには、次のようにします。

user = User.new(name: "John", email: "john@example.com")
user.save

これにより、usersテーブルに新しいユーザーが追加されます。

2. レコードの取得

データベースからレコードを取得するには、次のようにします。

user = User.find(1)  # IDが1のユーザーを取得

このコードは、IDが1のユーザーをデータベースから取得し、userオブジェクトに格納します。

3. レコードの更新

既存のレコードを更新するには、次のようにします。

user = User.find(1)
user.update(name: "Jane")

このコードは、IDが1のユーザーの名前を「Jane」に変更します。

4. レコードの削除

レコードを削除するには、次のようにします。

user = User.find(1)
user.destroy

このコードは、IDが1のユーザーをusersテーブルから削除します。

ActiveRecordを使った複雑なクエリ

ActiveRecordは、単純なデータ操作だけでなく、複雑なクエリにも対応しています。例えば、特定の条件でレコードを検索する場合、次のようにします。

1. 条件付き検索

users = User.where(name: "John")

このコードは、名前が「John」のユーザーをすべて取得します。

2. 並べ替え

users = User.order(created_at: :desc)

このコードは、ユーザーを作成日で降順に並べ替えて取得します。

3. 集計

count = User.where(active: true).count

このコードは、activeカラムがtrueのユーザー数を取得します。

実務で活用するために覚えておきたいメソッド

実務でよく使うActiveRecordのメソッドをいくつか紹介します。これらを覚えることで、データベース操作がかなり効率的に行えるようになります。

1. find_by

find_byは、条件に合致する最初のレコードを取得するメソッドです。

user = User.find_by(email: "john@example.com")

このコードは、email"john@example.com"のユーザーを取得します。

2. pluck

pluckは、指定したカラムの値だけを取得するメソッドです。

user_names = User.pluck(:name)

このコードは、usersテーブルのすべてのユーザーの名前を配列として取得します。

3. includes

includesは、N+1問題を回避するために関連するレコードを事前に読み込むメソッドです。

users = User.includes(:posts).all

このコードは、usersテーブルとpostsテーブルを同時に読み込むことで、後から関連するpostsレコードを効率的に参照できるようにします。

まとめ

ActiveRecordは、Railsでデータベースを操作するための強力なツールです。これを使うことで、SQLを書くことなく簡単にデータベースを操作できるようになり、開発効率が大きく向上します。

この記事で紹介した基本的な使い方や、実務で役立つメソッドを参考に、ActiveRecordを使いこなせるようになりましょう。

RailsのActiveRecordは、初心者でも簡単にデータベース操作ができる便利なツールです。まずは基本的なメソッドから使い始めて、少しずつ高度な機能にも挑戦してみましょう。

Rubyをマスターしよう

この記事で学んだRubyの知識をさらに伸ばしませんか?
Udemyには、現場ですぐ使えるスキルを身につけられる実践的な講座が揃っています。