テーブルにカラムを追加・削除など
概要
テーブルにカラムを追加や削除したい時などの操作をまとめます。 Railsではテーブル作成にマイグレーションファイルを作成しますが、テーブルを編集する際には過去に作成したマイグレーションファイルを編集するのではなく、変更するマイグレーションファイルを作成することによってテーブルを操作します。
カラムの追加
rails g migration Addカラム名Toテーブル名 カラム名:データ型
という形でテーブルにカラムを追加します。
例)Usersテーブルにemailカラムを追加したい時
rails g migration AddEmailToUsers email:string
を実行します。
下記のファイルが作成されます。
class AddEmailToUsers < ActiveRecord::Migration[6.0] def change add_column :users, :email, :string end end
これでrails db:migrate
を行うとテーブルにカラムが追加されます。
カラムを削除
rails g migration Removeカラム名Fromテーブル名 カラム名:データ型
という形でテーブルのカラムを削除します。
例)Usersテーブルからemailカラムを削除する
rails g migration RemoveEmailFromUsers email:string
を実行します。
下記のファイルが作成されます。
class RemoveEmailToUsers < ActiveRecord::Migration[6.0] def change remove_column :users, :email, :string end end
これでrails db:migrate
を行うとテーブルのカラムが削除されます。
カラムにデフォルト値を追加する
rails g migration ChangeColumnDefaultToテーブル名
でデフォルト値を設定するマイグレーションファイルを作成します。
例)Articlesテーブルにstatusカラムのデフォルト値で0を追加
rails g migration ChangeColumnDefaultToArticles
でマイグレーションファイルを作成します。
すると下記のファイルが作成されるので、その中にfrom: 変更前のデフォルト値, to: 変更するデフォルト値
を記述します。
class ChangeColumnDefaultToArticles < ActiveRecord::Migration[6.0] def change change_column_default :articles, :status, from: nil, to: "0" end end
これでrails db:migrate
を行うとカラムにデフォルト値のオプションが追加されます。
カラムにindexオプションを追加
rails g migration AddIndexToテーブル名カラム名
という形でテーブルのカラムにindexを追加します。
例)Usersテーブルにemailでインデックスを作成
rails g migration AddIndexToUsersEmail
でマイグレーションファイルを作成します。
すると下記のファイルが作成され、unique属性を追加する場合は追記します。
class AddIndexToUsersEmail < ActiveRecord::Migration[6.0] def change add_index :users, :email, unique: true end end
これでrails db:migrate
を行うとindexが追加されます。
テーブル名を変更
例)UsesテーブルをUsersテーブルに変更する
①マイグレーションファイル作成
rails g migration ChangeUsesToUsers
でマイグレーションファイルを作成します。
すると下記のファイルが作成されるので中に変更するテーブル名を記述します。
class ChangeUsesToUsers < ActiveRecord::Migration[6.0] def change rename_table :uses, :users end end
②モデル修正
Use.rbでモデルファイルが作成されているので、User.rbに変更します。
それに応じてファイルの中身もclass Use < ApplicationRecord
からclass User < ApplicationRecord
に変更。
アソシエーションの設定をしている他のモデルがあればそちらも修正していきます。
③コントローラやビューの修正
必要に応じてコントローラやビューの中身も修正します。
ここは個人個人でかなり違ってくると思うので、VScodeの検索機能などで該当するものを探してもれなく修正しましょう。
④マイグレーションファイルを適用する
rails db:migrate
を忘れずに行い適用させます。
参考サイト
Railsでデータベースカラムの追加を行う方法 - Qiita
Rails - データベースのカラムにindexを追加する - fv17の日記 - Coding Every Day
Rails で既存カラムにdefault オプションを追加したい - Qiita
【Ruby on Rails】テーブル名の変更方法と変更時にやること一覧&ステップ - Qiita
感想
今回はテーブル周りの変更についてまとめました。
まだまだあると思うのでまた新しく出てきたらここに追記していきます。