Fresopiya
場所にもお金にも時間にも、何にも縛られない自由な状態になったら一体人間は何をしてどこに向かうのか。 まずはとにかく自由を目指すエンジニアのブログです。

哲学とプログラミングとブログがメインになるかと。
Ruby on Rails

【Ruby on Rails】データベース作成とCRUD処理

どうも、とがみんです。

この記事では、Ruby on Railsによるデータベースへの作成や接続、そしてCRUD処理について紹介していきます。

Ruby on Railsのデータベース操作の仕組み

Ruby on Railsでは、使用できるデータベースはSQLite、MySQL、PostgreSQL等複数あり、自由に選択することができます。

データベースとのやり取りを行うのがMVCアーキテクチャのモデル(M)で、モデルはデータベースに含まれるテーブル毎に用意されます。

また、オブジェクト指向言語と、リレーショナルデータベースの橋渡しとして、「O/Rマッパー」というものが使用されます。

「O/Rマッパー」は、アプリケーション側で使用するオブジェクトモデルと、データベースが使用するリレーショナルモデルとは構造が違うため、そのギャップを解消するためのツールです。

これにより、データベースから取得した、情報をオブジェクトにマッピングする作業が不必要になったり

また、リレーショナルデータベースを扱うためのSQLを記述する必要もなくなり、開発を効率化することができます。

データベースの作成と接続

以下のような手順で、データベースの接続設定と作成を行っていきます。

  1. データベース接続の設定
  2. データベースにアクセスするためのモデルクラス作成
  3. マイグレーションファイルによるデータベースの作成

データベース接続の設定

データベースの接続の設定について、まず、config/database.ymlのファイルに、接続設定を定義する必要があります。

使用するデータベースの種類や、接続先のIPアドレスなどの設定を行います。

database.ymlファイルには、「開発」、「テスト」、「本番」環境が用意されており、別々のデータベースを用意するようになっています。

これによって、たとえ開発環境で行った操作が不用意に本番環境に影響を及ぼすような事故を防げています。

データベースを扱うに当たって、設定できるパラメータは以下です。

パラメータ名 概要
adapter 接続するデータベースの種類(sqlite、mysql2、postgresql)
database データベース名(SQLiteではデータベースファイルのパス)
host ホスト名/IPアドレス
port ポート番号
pool 確保する接続プール
timeout 接続タイムアウト時間
encoding 使用する文字コード
username ユーザー名
password パスワード
socket ソケット

接続プール:データベース接続オブジェクトのキャッシュ。データベースへの接続をあらかじめ準備しておき、利用後は、プールに戻し再利用する。それにより、本来通信したいデータ以外の制御用のデータのやり取りを軽減できる。

>Oracle Universal Connection Pool for JDBC開発者ガイド

データベースにアクセスするためのモデルクラス作成

データベースへ接続する設定が終わったら、次にデータベースにアクセスするためのモデルクラスを作成します。

以下のようなusersテーブルを扱うにあたって、必要なモデルを作成します。

データ名 データ型
userName String
age integer
gender boolean

また、作成したモデルと、データベースのリレーショナルモデルの橋渡しを行う「O/Rマッパー」も同時に作成します。

この「O/Rマッパー」はオブジェクト指向で書かれたコードをデータベースを操作するSQLに書き換える役割を果たします。

ターミナル上で以下のコマンドを実行し、usersテーブルを作成します。

rails generate model users userName:string age:integer gender:boolean

実行すると、幾つかファイルが作成されます。

マイグレーションファイルによるデータベースの作成

先ほど、rails generateコマンドで、データベースにアクセスするためのモデルクラスを作成しましたが、まだデータベース(テーブル)は作成されていません。

なので、マイグレーションという機能を利用して、データベースの作成を行います。

「マイグレーション」とは、テーブルレイアウトを作成/変更するための仕組みのことで、これを利用することによって、テーブル保守の作業を半自動化し、

途中でレイアウトの変更が起こった場合も、簡単に反映することができます。

マイグレーションを実行するためのファイルは、先ほどrails generateでモデルを作成した際に自動生成されています。

以下のコードを実行します。

rake db:migrate

以下のような結果が得られれば、usersテーブルは正しく作成できています。

データベース操作CRUD処理

これまでの処理で、接続するデータベースの設定やテーブルの作成を行ってきました。次に、そのテーブルにデータを入れ込んだりしていきます。

CRUD処理の「CRUD」とは、データの「作成(Create)」、「参照(Read)」、「更新(Update)」、「削除(Delete)」の頭文字をとっています。

CRUD処理をrails console上で確認していくので、以下のコマンドを実行します。

rails console

新規データ作成Create処理

新規データの作成についてです。以下のコードを実行すると、データが作成されます。

データの参照Read処理

先ほど保存したデータを取り出し、togaminという変数に代入するコードが以下です。

データの更新Update処理

togaminという変数に格納された、先ほど取り出したデータを更新します。名前をTogaminからTogamin2に変更しました。

データの削除Delete処理

まとめ

Ruby on Railsにおいて、データベースの設定や作成、またCRUD処理について紹介しました。

参考文献