こんにちは、Nanayakuです。
今回は、モデルとmigrationについて解説します。
目次
モデルとは
モデルとは、データ操作やアプリケーション固有の処理(ビジネスロジック)を行うファイルの集まりの事です。
MVCの流れで確認すると、データベースからデータの取得や保存をする役割があります。
データベースの確認
データベース(MySQL)を初めて聞いた人はこちらへ=>DBとはなんぞや・・・!?
データベースは、整理されたデータ(テーブル)の集合体です。
データの作成(Create)、読み取り(Read)、更新(Update)、削除(Deleate)の4つの機能があります。
それぞれの頭文字をとってCRUD(クラッド)処理と呼びます。
データベースは、データの共有・検索して利用する事を目的に作られました。
テーブル
基本的に1つのWebアプリケーションで、1つのデータベースを使います。
テーブルは、各要素のデータをまとめた表のようなものです。
データベースの中に、このテーブルがいくつもあります。
例えば、ユーザー情報ならUserテーブル、youtubeの動画データならVideoテーブルになります。
データベース
Userテーブル | |||
カラム名 | id | name | |
型 | integer | string | string |
Videoテーブル | |||
カラム名 | id | titel | video |
型 | integer | string | string |
カラム
カラム(列)は、テーブルの各項目の事です。
名前やメースアドレスなどです。
また、カラムには型と言う概念があり、整数・文字列・時刻など、保存するデータにあった型を指定します。
参考
レコード
テーブルの各データの事です。
エクセルのシートで例えると、カラム(列)は縦、レコード(行)は横です。
同じデータを複数のレコードとして保存できません。
データの重複を避けるため、カラムにはプライマリキー(主にID)を設定します。
railsでは、テーブルを作成する時、自動でidと言うカラムを追加してくれます。
モデルの作成
railsでモデルを作成する時のコマンドは、以下の通りです。
rails g model モデル名
gはgenerateの略です。
Userモデルを作る場合は、以下のようになります。
rails g model User
Userモデルが作成されると、画像のようにdbのmigratesディレクトリにmigrationファイルが出来ます。
作成されたmigrationファイルの中身は↓の画像のようになっています。
migrationファイルとは
データベースを操作するには、データベースにログインし、SQLと呼ばれる言語と使わなければなりません。
この作業を簡単にするために、migrationファイルがあります。
migrationファイルを作成・編集し、Railsコマンドでデータベースに読み込ませる事で、データベース構造を作成することが出来ます。
簡単に言うと、「この構造でテーブルを作ってくれ」と依頼書を出す感じです。
migrationファイルの編集
changeと言うメソッドで、migrationファイルの作成や変更ができます。
create_tableはテーブルを作るためのメソッドです。
「t.string :name」について少し解説します。
「t.」は変数で、引数名がテーブルの名前になります。
t(引数名)がテーブルの名前になります。
「string」は型です。(数値や文字列などを指定)
「:name」の「:」はシンボルと言われ、この中に値(名前)を代入します。
migrationファイルの読み込み
以下のコマンドで、データベースにmigrationファイルを読み込ませることができます。
rails db:migrate
実行すると「schema.rb」ファイルが作成されます。
中身は以下のようになっています。
「created_at」と「updated_at」はtimestampの型で、データの作成・更新の時に自動的に時刻を保存します。
migrationファイルの状態を戻す
migrationファイルを変更してもう一度「rails db:migrate」を実行しても、テーブルの変更はできません。
migrationファイルを更新するには、「rails db:rollback」コマンドで、直前(1つ前)に読み込みを実行し作成したテーブルを削除します。
画像から、削除されたのがわかります。
もう1度「rails db:migrate」を実行します。
もう1度テーブルを作成できました。
まとめ
- 「rails g model モデル名」でmigrationディレクトリを作成
- 作成されたmigrationファイルを編集
- 「rails db:migrate」で、データベースにmigrationファイルを読み込む
- データベースにマイグレーションファイル通りのテーブルが作成される
最後に
備忘録がわりに作ったので、間違っている所とかあったら、コメントくれると嬉しいです。