LoginSignup
133
146

More than 5 years have passed since last update.

Railsでデータベースカラムの追加を行う方法

Posted at

はじめに

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カラムができていることを確認できました。


以上です!

この記事を読んだ方に

この記事を読んで、誤っている箇所をみつけたり、追記した方がいい内容などありましたら、編集リクエストやコメント欄で指摘していただけると助かります。

参考

133
146
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
133
146