2
0

More than 3 years have passed since last update.

テーブルの内容を修正する方法

Posted at

rails db:rollbackの手順

マイグレーションを差し戻して、テーブルの内容を修正する。

必要な手順は以下の3ステップ

ステップ1 ロールバック

ステップ2 migrationファイルの修正

ステップ3 再度migrationを実行

ステップ1

rails db:rollbackコマンド

ターミナル
% rails db:rollback

rails db:rollback
カラム名を誤ってしまった場合などに、モデルに紐づくテーブルを作り直したいときに用いられるターミナルコマンド

例: nameをnemeにしてしまった等

「差し戻す」と表現される

実行すると以下のような表示が出て差し戻される。

ターミナル
== 20200315054113 CreatePosts: reverting ======================================
-- drop_table(:posts)
   -> 0.1939s
== 20200315054113 CreatePosts: reverted (0.2332s) =============================

rails db:migrate:statusコマンドとは?

補足情報として
rails db:migrate:statusというコマンドで状態を確認出来る。

ターミナル
% rails db:migrate:status
  • マイグレーションファイルの状況
    • up = 実行済み
    • down = 適応されていない
ターミナル
database: first_app_development

 Status   Migration ID    Migration Name
--------------------------------------------------
   up     20190820071210  Create posts

downの表記がされていれば差し戻されている

ターミナル
database: first_app_development

 Status   Migration ID    Migration Name
--------------------------------------------------
  down    20190820071210  Create posts

ステップ2

migrationファイルの修正

db/migrate/20XXXXXXXXXXXX_create_変更前.rb
class CreatePosts < ActiveRecord::Migration[6.0]
  def change
    create_table :posts do |t|
      t.text :memo
      t.timestamps
    end
  end
end

t.text :memot.text :contentへ変更

db/migrate/20XXXXXXXXXXXX_create_変更後.rb
class CreatePosts < ActiveRecord::Migration[6.0]
  def change
    create_table :posts do |t|
      t.text :content
      t.timestamps
    end
  end
end

カラム名と型とは?

補足情報として、カラム名と型とは何のことなのか解説

カラム名と型
t.text :memo

t.に続くのがカラムの型
その右側にシンボルで記載されるものがカラム名

ステップ3

再度migrationを実行

修正したマイグレーションを実行します。

ターミナル
% rails db:migrate

以上の修正が反映されているか確認して終了です

2
0
1

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
2
0