Rails テーブルを作り直す

Rails での開発中にレコードを破棄して、テーブルを一から作り直したくなった場合は、どうしたらよいのか?


解決策

古いマイグレーションファイルを削除し、新しいマイグレーションファイルを作り、マイグレーションをリセットすることで作り直せます。


1. 古いマイグレーションファイルを削除する

はじめに古いマイグレーションファイルを削除します。

db/migrate フォルダの *.rb ファイルです。


2. 新しいマイグレーションファイルを作る

rails generate migrationコマンドで新しいマイグレーションファイルを作ります。マイグレーション名は CreateTree にしました。

$ rails generate migration CreateTree

新しく生成されたマイグレーションファイルを開き、適時、作り直したいテーブルを定義します。

# db/migrate/xxxxxxxxyyyyyy_create_tree.rb

class CreateTree < ActiveRecord::Migration
 def change
  create_table :trees do |t|
   t.string :name, null: false
  end
 end
end

3. マイグレーションをリセットする

rake db:migrate:resetコマンドにより、テーブルとレコードの削除およびマイグレーションの実行を一息に行います。

$ rake db:migrate:reset

これでテーブルの作り直しは完了です。

db/schema.rb にも新しいテーブル構成が記述されているはずです。


その他

現在の db/schema.rb の内容でテーブルを作り直す場合は、

$ rake db:reset

を使用します。(リファレンス不明)