はじめに
ポートフォリオを作成していて、あとからカラムを追加したいときや、最初に設定したカラムの型を変更したいときに、どうすればよいのか分からなかったことがあったので、初学者なりに初学者がみてもわかりやすいようにまとめました。
(最初は既にあるマイグレーションファイルに直接追加や変更を加えればよいと思っていました。しかしそれは正しくないので、新たに別のマイグレーションファイルを作成して追加や変更する方法を記述していきます。)
モデルとテーブルの作成
下記のコマンドによりモデルを作成すると、モデルと一緒にこのモデルが担当するテーブルを作成するためのマイグレーションファイルが自動で作成されます。
$ rails g model [モデル名] [カラム名]:[カラムの型]
例えば、Userモデルを作成したい場合、[モデル名]にUser、[カラム名:カラムの型]にはname:string email:stringを指定します。コマンドは以下のようになります。
$ rails g model User name:string email:string
コマンドを実行すると以下のようなマイグレーションファイルが作成されます。
class CreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :users do |t|
t.string :name
t.string :email
t.timestamps
end
end
end
上記ファイルが生成されたのを確認し、次のコマンドでマイグレーションを実行します。
$ rails db:migrate
これでUsersテーブルが作成されました。
カラムの追加
既に作成したテーブルにカラムを追加したい場合は、既存のマイグレーションファイルに直接書き込むのではなく、新たにマイグレーションを作成して追加します。
カラムを追加する為のマイグレーションファイルの作成は次のコマンドになります。
$ rails g migration Add[カラム名]To[テーブル名] [カラム名]:[カラム型]
例えば既にあるusersテーブルにintroductionカラム(text型)を追加したい場合は以下になります。
$ rails g migration AddIntroductionToUsers introduction:text
コマンドを実行すると以下のようなマイグレーションファイルが作成されます。
class AddIntroductionToUsers < ActiveRecord::Migration[6.0]
def change
add_column :users, :introduction, :text
end
end
上記ファイルが生成されたのを確認し、次のコマンドでマイグレーションを実行します。
$ rails db:migrate
これでusersテーブルにintroductionカラム(text型)が追加されました。
カラムの型の変更
既にあるテーブルのカラムの型を変えたいときは、カラム追加と似た手順で変更することができます。
カラムの型を変更する為のマイグレーションファイルの作成は次のコマンドになります。
$ rails g migration change_data_[カラム名]_to_[テーブル名]
例えば既にあるproductionsテーブルのmaterialカラムの型を変更したい場合は以下になります。
$ rails g migration change_data_material_to_productions
コマンドを実行するとマイグレーションファイルが作成されるので、変更したいカラムの型を追記します。
例えば、productionsテーブルのmaterialカラムの型をinteger型に変更したい場合は以下のように追記します。
class ChangeDataMaterialToProductions < ActiveRecord::Migration[6.0]
<!-- ***** 以下を追加 ***** -->
def change
change_column :productions, :material, :integer
end
<!-- ***** 以上を追加 ***** -->
end
追記が完了したら、次のコマンドでマイグレーションを実行します。
$ rails db:migrate
これでproductionsテーブルのmaterialカラムの型がinteger型に変更されました。
最後に
この記事は初学者がポートフォリオ作成中に学んだ事を初めてQiitaにまとめました。
内容的に間違いがあればぜひコメントいただけると嬉しいです。