5
10

More than 3 years have passed since last update.

やさしい図解で学ぶ モデル マイグレーション その1

Last updated at Posted at 2019-11-22

Railsにおいてテーブル作成に必要なモデルとマイグレーションの基本をかんたんに解説しています。

⭐️テーブル作成に必要なファイル

これから作成するアプリケーションのDB設計がある程度終わったら、データを保存するテーブルをDB上に作成します。

その際、必要なファイルが

「DBのデータを取り扱うファイル = モデル
「テーブルの設計図となるファイル = マイグレーションです。

スクリーンショット 2019-11-21 18.54.49.png

⭐️作成するアプリの仕様を確認

仮に「オンラインで学べるプログラミングスクール」を製作しているとします。

スクリーンショット.png

基本機能

・ユーザー登録できる
・ユーザーはプログラミングコースを複数選択可能

⭐️作成するテーブルをイメージ

ひとまずDB上に作るテーブルは3つ

スクリーンショット 2019-11-.png

① usersテーブル
② coursesテーブル
③ course_usersテーブル (①と②の中間テーブル)

*中間テーブルについてまだよくわからない方は こちら

⭐️作成コマンド

DBとのやりとりを担うモデルファイルはターミナルを用いて作成します。

スクリーンショット 2019-11-.png

ちなみにモデルファイル名は単数形で実行します。

usersテーブル用のモデルなら 「 rails g model user 」
coursesテーブル用なら 「 rails g model course 」

terminal
    例)
    $ rails g model user          ユーザーのモデルファイル作成
    $ rails g model course        コースのモデルファイル作成 

Railsではrails g model コマンドを実行するだけでそれに付随するのマイグレーションファイルも同時作成してくれます。

スクリーンショット.png

それでは例としてまずrails g model userを実行した結果を見てみましょう。

スクリーンショット 2019-11-22 12.02.10.png

上の画像は実行結果です。

数字の書かれたファイルがマイグレーションファイル
その下の行のuser.rbとあるのがモデルファイルです。

このコマンドで作成された各ファイルの中身は以下になります。

スクリーンショット 2019-11-22 12.47.48.png

*この時点でテーブルはまだ作られておりません。
イメージとしては設計図を書く下図を用意したようなイメージです。

🌟カラムの名前と型

無事に作成できましたが、今はほとんど空っぽの状態なのでここから必要事項を記入していきます。

まずはテーブルの設計図となるマイグレーションファイル
「カラムの名前と型」を記述していきます。

「名前」に関してはある程度、任意で決められます。
一方、「型」というのはカラムの中にどんな種類の値が入るのかを事前に決めなければいけません。

以下は主に使う基本的なもののみ。(*他にもカラム型の種類は複数存在します。)

スクリーンショット 2019-11-22 15.20.05.png

使用例はこちら
スクリーンショット 2019-11-22 15.24.07.png

実際の記述例

作業ファイル:usersテーブルのマイグレーションファイル
スクリーンショット 2019-11-22 15.11.35.png

ちなみに
t.timestampsというのは標準で備わっているカラムで
・created_at 作成された日時
・updated_at 内容が変更された日時

の2つが自動的に作成されます。

同じように
rails g model course (coursesテーブル作成)と 
rails g model course_users(courseとuserの中間テーブル)
も実行していきます。

⭐️補足:作成コマンド2

さきほどはrails g model をしたあと、マイグレーションファイルを編集しましたが

rails g するときにすでにカラム設定の記述をする方法がありますのでご紹介いたします。
カラム数が少ないテーブルなどはこの方法が便利です。

coursesテーブルをこの方法で作成してみました。

スクリーンショット 2019-11-22 15.44.40.png

マイグレーションファイルを開くとすでに
t.string :language
という記述が記載されています。

⭐️削除コマンド

モデルの名前やスペルを誤った際など、rails g したあとすぐに気づいた場合は、削除して作り直すこともできます。

スクリーンショット 2019-11-22 16.00.23.png

こちらを実行するとモデルファイル、マイグレーションファイル等々、rails g model...で作成したものは削除してくれます。

*このあと、テーブルを実際にDBに作成する実行コマンド(bundle exec rake db:migrate)というがありますのでそのコマンドを実行する前でしたら簡単に削除できますので、ご活用ください。

⭐️外部キーのカラムの設定方法

中間テーブルは外部キー(他のテーブルの主キー(id))を2つ持っています。

外部キーをカラムに設定する方法はいくつかありますが、ひとまず「 references 型 」を覚えましょう。

スクリーンショット 2019-11-22 18.12.20.png

実際に記述すると以下のようになります。

作業ファイル:中間テーブルのマイグレーションファイル
スクリーンショット 2019-11-22 15.57.00.png

⭐️DBにテーブルを作成するコマンド

実はモデルファイルやマイグレーションファイルを作成しただけではDBにテーブルは作られません。
以下のコマンドを実行することで初めてDBにテーブルが作成されます。

スクリーンショット 2019-12-03 11.44.33.png

現段階で考えうるカラムの構成ができたら、このコマンドを実行します。
(記載していませんがカラムの追加、削除、変更はそれ専用のマイグレーションファイルを書いて実行することで反映されます。)

to be continued

少し長くなってしまったのでつづきの記事を随時作成します。

次回は各テーブルとのアソシエーション(関連性など)をモデルファイルに記述する方法について学びます。

つづきはこちら
やさしい図解で学ぶ モデル マイグレーション その2

5
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
10