はじめに
Rails チュートリアルなどで、Railsの勉強をしていてフォームの実装をしていた時に、フォームを追加したい場合、当然カラムもしなければいけません。色々調べていたら勉強になったので、まとめておきます。
環境
この記事では以下の環境(2018年6月18日時点)で動作確認できました。
- Ruby: 2.4.1
- Rails: 5.0.7
現状
microposts
という名前のテーブルに、新たにstatus
というカラムを追加したい場合
mysql> describe microposts;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| content | varchar(255) | YES | | NULL | |
| user_id | bigint(20) | YES | MUL | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
+------------+--------------+------+-----+---------+----------------+
カラム追加の方法(マイグレーションファイルの作成)
カラムを追加するコマンドをするマイグレーションファイルを生成する基本構文は、下記のようになります。
$ rails g migration Addカラム名Toテーブル名 カラム名:データ型
実際行ったコマンド
実際行ったコマンドは下記のようになります。
$ rails g migration AddStatusToMicroposts status:string
実際できたマイグレーションファイル
20180618075017_add_status_to_microposts.rb
class AddStatusToMicroposts < ActiveRecord::Migration[5.2]
def change
add_column :microposts, :status, :string
end
end
マイグレーションを実行
実際にカラムを追加するために、マイグレーションを実行します。
$ rails db:migrate
== 20180618075017 AddStatusToMicroposts: migrating ============================
-- add_column(:microposts, :status, :string)
-> 0.0088s
== 20180618075017 AddStatusToMicroposts: migrated (0.0097s) ===================
DB確認
マイグレーションが実行されているかを確認するために、DB(microposts
テーブル)を確認して見ます。
mysql> describe microposts;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| content | varchar(255) | YES | | NULL | |
| user_id | bigint(20) | YES | MUL | NULL | |
| created_at | datetime | NO | | NULL | |
| updated_at | datetime | NO | | NULL | |
| status | varchar(255) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
status
カラムができていることを確認できました。
以上です!
この記事を読んだ方に
この記事を読んで、誤っている箇所をみつけたり、追記した方がいい内容などありましたら、編集リクエストやコメント欄で指摘していただけると助かります。