RailsのModelとDBの関係
Railsを扱うにあたって開発の順番は
- モデル
- コントローラー&ビュー
と思っている。
そのため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.ymlはRDBのどれを利用するかによって、その書式が異なる。
DB作成するにあたって以下のことが必要
Railsの起動は以下のコマンド
rails server
DB作成
rails db:create
上記コマンドでDBを作成する
RailsからDBへアクセスする場合、SQLを実行するより効率的に アクセスする仕組みのことをO/Rマッピングという。
O/Rマッパー
O/Rマッピングの考えに基づいて実装されたライブラリ
Railsで採用されているO/RマッパーはActiveRecord。
ActiveRecordの機能
以下代表的な機能を記載する。
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