py-py’s blog

何か書くよ

RailsのModelとDBの関係

Railsを扱うにあたって開発の順番は

  1. モデル
  2. コントローラー&ビュー

と思っている。

そのためRailsにおけるModelとDBとの関係からまとめる。

Railsが提供するModelは、DB上にあるテーブルと対応しておりテーブルデータを操作できる。

Railsアプリが扱うDBは基本1つであり、DB上にあるテーブルごとに 1つのModelとしてデータを扱う。

DB接続のための設定ファイル

以下のコマンドでRailsプロジェクトを作成する

rails new

上記コマンドを入力した時点で下記ファイルが作成される

ファイル/フォルダ 目的
app/ アプリケーションのメインフォルダ
bin/ コード生成やサーバー起動に利用するスクリプト)
config/ アプリケーション本体、ルーティングなどの設定情報
db/ データベース本体やスキーマ(データベースの構造)情報、マイグレーションファイル
lib/ アプリケーションのメインフォルダ
log/ ログの出力先
public/ 公開フォルダ
tmp/ 一時ファイル
vendor/ サードパーティのコード
.gitignore Rails プロジェクトのための.gitignore
config.ru サーバーの起動に使用
Gemfile,Gemfile.lock 必要なgemライブラリを定義
Rakefile ターミナルから実行可能なタスク
README.rdoc readmeファイル

なお、config/database.ymlRDBのどれを利用するかによって、その書式が異なる。

DB作成するにあたって以下のことが必要

  1. SQLを起動させる
  2. Railsを起動させる

Railsの起動は以下のコマンド

rails server

DB作成

rails db:create

上記コマンドでDBを作成する

O/Rマッピング

RailsからDBへアクセスする場合、SQLを実行するより効率的に アクセスする仕組みのことをO/Rマッピングという。

O/Rマッパー

O/Rマッピングの考えに基づいて実装されたライブラリ

Railsで採用されているO/RマッパーはActiveRecord

ActiveRecordの機能

以下代表的な機能を記載する。

  1. SQLを書かなくてもデータのCRUDを可能に
  2. RDBとの関連付けをモデルクラスの関連付けとして表現
  3. データの検証機能提供

Modelクラスとテーブルの命名ルール

ActiveRecordはModel名とテーブル名に一定のルールがある。

ルール:Modelクラス名は単数形、テーブル名はその複数形である

例:

Model:Message

テーブル名:messages


マイグレーションについて

マイグレーションとは?
Railsにおけるマイグレーションは、テーブルの新規作成やテーブル構造の変更を簡単に管理する仕組み。

ActiveRecordによるモデルクラス作成

rails generate model Model名 column1:data_type column2:data_type(...)

上記コマンドをモデルクラスとテーブル作成のSQLを実行するためのマイグレーションファイルを作成する。

rails generate modelコマンドでモデルクラスとマイグレーションファイルが作成されるだけで、DB上に必要なテーブルは作成されていない。

マイグレーションファイルに基づいてDB上にテーブルを作成するにはマイグレーションコマンドを実行する。

rails db:migrate