Railsにおいてテーブル作成に必要なモデルとマイグレーションの基本をかんたんに解説しています。
⭐️テーブル作成に必要なファイル
これから作成するアプリケーションのDB設計がある程度終わったら、データを保存するテーブルをDB上に作成します。
その際、必要なファイルが
「DBのデータを取り扱うファイル = モデル」と
「テーブルの設計図となるファイル = マイグレーション」です。
⭐️作成するアプリの仕様を確認
仮に「オンラインで学べるプログラミングスクール」を製作しているとします。
基本機能
・ユーザー登録できる
・ユーザーはプログラミングコースを複数選択可能
⭐️作成するテーブルをイメージ
ひとまずDB上に作るテーブルは3つ
① usersテーブル
② coursesテーブル
③ course_usersテーブル (①と②の中間テーブル)
*中間テーブルについてまだよくわからない方は こちら
⭐️作成コマンド
DBとのやりとりを担うモデルファイルはターミナルを用いて作成します。
ちなみにモデルファイル名は単数形で実行します。
usersテーブル用のモデルなら 「 rails g model user 」
coursesテーブル用なら 「 rails g model course 」
例)
$ rails g model user ユーザーのモデルファイル作成
$ rails g model course コースのモデルファイル作成
Railsではrails g model コマンドを実行するだけでそれに付随するのマイグレーションファイルも同時作成してくれます。
それでは例としてまずrails g model userを実行した結果を見てみましょう。
上の画像は実行結果です。
数字の書かれたファイルがマイグレーションファイル
その下の行のuser.rbとあるのがモデルファイルです。
このコマンドで作成された各ファイルの中身は以下になります。
*この時点でテーブルはまだ作られておりません。
イメージとしては設計図を書く下図を用意したようなイメージです。
🌟カラムの名前と型
無事に作成できましたが、今はほとんど空っぽの状態なのでここから必要事項を記入していきます。
まずはテーブルの設計図となるマイグレーションファイルに
「カラムの名前と型」を記述していきます。
「名前」に関してはある程度、任意で決められます。
一方、「型」というのはカラムの中にどんな種類の値が入るのかを事前に決めなければいけません。
以下は主に使う基本的なもののみ。(*他にもカラム型の種類は複数存在します。)
実際の記述例
ちなみに
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テーブルをこの方法で作成してみました。
マイグレーションファイルを開くとすでに
t.string :language
という記述が記載されています。
⭐️削除コマンド
モデルの名前やスペルを誤った際など、rails g したあとすぐに気づいた場合は、削除して作り直すこともできます。
こちらを実行するとモデルファイル、マイグレーションファイル等々、rails g model...で作成したものは削除してくれます。
*このあと、テーブルを実際にDBに作成する実行コマンド(bundle exec rake db:migrate)というがありますのでそのコマンドを実行する前でしたら簡単に削除できますので、ご活用ください。
⭐️外部キーのカラムの設定方法
中間テーブルは外部キー(他のテーブルの主キー(id))を2つ持っています。
外部キーをカラムに設定する方法はいくつかありますが、ひとまず「 references 型 」を覚えましょう。
実際に記述すると以下のようになります。
⭐️DBにテーブルを作成するコマンド
実はモデルファイルやマイグレーションファイルを作成しただけではDBにテーブルは作られません。
以下のコマンドを実行することで初めてDBにテーブルが作成されます。
現段階で考えうるカラムの構成ができたら、このコマンドを実行します。
(記載していませんがカラムの追加、削除、変更はそれ専用のマイグレーションファイルを書いて実行することで反映されます。)
to be continued
少し長くなってしまったのでつづきの記事を随時作成します。
次回は各テーブルとのアソシエーション(関連性など)をモデルファイルに記述する方法について学びます。
つづきはこちら
やさしい図解で学ぶ モデル マイグレーション その2