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
を使用します。(リファレンス不明)