データベースにテーブルを追加する方法

NO IMAGE

https://tech-master.s3.amazonaws.com/uploads/curriculums//00cbc4164262d0b7d3f7238f384aba81.png

テーブルは縦横の表のように構成され、
データを1件足すごとにレコード(行)(横)が増えていきます。
また、1つのレコードのそれぞれの項目のことをカラム(縦)と呼びます。

https://tech-master.s3.amazonaws.com/uploads/curriculums//aa841a358d590462bbaf4fbbd823759b.png

テーブルを作成するときの流れ

作成時は、ターミナルで「rails g model (モデル名)」というコマンドを実行します。

https://tech-master.s3.amazonaws.com/uploads/curriculums//d3a33ff643405246894925e3a1a38c62.png

そうするとファイルが4つ作成されます。
そのうち、以下の2つのファイルを使用します。
残りの2つはテスト用のファイルで、TECH::MASTERの応用編で使用します。

 

ファイルの種類 ファイル名 役割
モデルのクラスファイル app/models/tweet.rb 主に、tweetsテーブルから取得したデータに何らかの命令(メソッドと言います)を実行させたいときに記述するファイル。
マイグレーションファイル db/migrate/20190513083226_create_tweets.rb(*1) テーブルの設計図。ここに必要な事項を記述して、マイグレートを実行するとテーブルが作成されます。

(*1) 作成日時がファイル名になります

 

テーブルを作成しよう

 必要なファイルを作成しよう

では実際にテーブルをつくっていきましょう。
ターミナルで以下のコマンドを実行します。

ターミナル
$ rails g model tweet 
Running via Spring preloader in process 15924 
invoke active_record 
create db/migrate/20190513083226_create_tweets.rb 
create app/models/tweet.rb 
invoke test_unit 
create test/models/tweet_test.rb 
create test/fixtures/tweets.yml 

上記のようにcreateと書かれた行が4つあって、
ファイルが作成されたことを確認しましょう。

マイグレーションファイルの記述の仕方

マイグレーションファイルとは、
テーブルを作成するときの設計図のことでしたね。

その時に必ず書くのが「カラム名」「データ型」です。
データ型というのは初めて出てきた言葉なので、
どのようなものか見ておきましょう。

カラムのデータ型とは

データ型とは、そのカラムに格納するデータの種類を表すものです。
あらかじめ種類を定めておくことによって、
おかしなデータが予期せずカラムに保存されてしまうことを防ぐことができます。

以下に主なデータ型の種類を紹介します。

データ型 説明 用例
integer 整数 ユーザーのidなど
string 文字(255文字まで) ユーザー名、パスワードなど
text 文字(256文字以上) 投稿文など
boolean 真か偽か 真偽フラグ
datetime 日付と時刻 作成日時、更新日時など

 マイグレーションファイルを編集しよう

db/migrate/2019XXXXXXXXXX_create_tweets.rbファイルを開いて編集しましょう。
XXXXXXXXの部分には、マイグレーションファイルを作成した日時が入っています。

class CreateTweets < ActiveRecord::Migration[5.2] 
def change 
create_table :tweets do |t| 
t.string :name 
t.text :text 
t.text :image 
t.timestamps 
end 
end 
end

上の4~6行目を追加します。

 

4行目の前半ではstring型を指定しています。
名前のカラムにそれほど長い文字列が入ることは想定されないので
255字まで格納できるstringを使っています。
また、最初に「t.」をつけているのは決まった書き方なので必ず守りましょう。

後半では「:name」と書いてありますが、
これは「name」という名称でカラムをつくるという意味です。

最初に「:(コロン)」がついていますが、これはシンボルと呼ばれるものです。
シンボルが何か気になる方は次の項をご確認ください。
カラム名の前には必ずコロンをつけるというルールさえ覚えておけばひとまず大丈夫です。

 

シンボルとは

任意の文字列の前にコロンをつけると、
Rubyでは文字列ではなくシンボル型として扱われます
主に処理速度を向上させるために用意されている仕組みです。

 マイグレートを実行しよう

マイグレーションファイルを編集しただけではテーブルの追加はできません。
編集内容を反映させるためにマイグレートを実行しましょう。

$ rails db:migrate

phpMyAdminを使って、詳しく内容を見てみましょう。

https://tech-master.s3.amazonaws.com/uploads/curriculums//015ed2359e33c81a7cdb969eb27e8b9a.png

 

上記の手順で確認すると、tweetsテーブルの中に「name」「text」「image」カラム
きちんとできていることがわかります。

 

 マイグレーションファイルを扱うときの注意点

すでにマイグレート済みのマイグレーションファイルを
編集したり、削除しては絶対にいけません

設計図であるマイグレーションファイルと、
実態であるデータベースの内容がずれてしまいます。

応用カリキュラムでアプリをサーバーにアップデートする際に
修正しにくいエラーになってしまうため、絶対に行わないようにしましょう。

 

 マイグレートの状況を確認する方法

$ rails db:migrate:status

誤ってつくったテーブルを修正するには

続いて、マイグレーションファイルを誤って編集し、
そのままマイグレートもしてしまった場合の修正方法を確認しましょう。

これまでみた通り、一旦マイグレートしたファイルは編集してはいけないのでした。
その時に使用するのが下記のコマンドです。

 以下のコマンドは、今は「実行しません」

$ rails db:rollback

これはロールバックという操作で、
一度実行したマイグレートをキャンセルするためのものです。
実行すると、最後に実行されたファイル1つ分が実行前の状態に戻ります。

ロールバックを行なってテーブルの修正をするときは下記の順番で操作を行いましょう。

①ロールバックを行う
②マイグレーションファイルを正しく編集する
③再度マイグレートを実行する

 

未分類カテゴリの最新記事