db:rollback
既存のデータを含むテーブルでは絶対に使用しないでください。
大量のデータを含むいくつかの実稼働用の RonR アプリがあり、移行テーブルには 100 以上のエントリがあり、新しい移行を微調整テーブルに追加するのがRails のやり方です。明快とはどういう意味かわかりませんが、スキーマとデータモデルは時間の経過とともに変化しますが、それは問題ありません。
1 つのヒント。移行は素晴らしいですが、それらはほんの始まりにすぎません。既存のデータを修正するために必要に応じて複雑なロジックを含めることができます (そのように)
既存のテーブルのデータの変更:
def up
add_column :rsvps, :column_name_id, :integer
update_data
end
def update_data
rsvps = Rsvp.where("other_column is not null")
rsvps.each do |rsvp|
invite = Blah.find(rsvp.example_id)
...
rsvp.save
end
end
もう 1 つのヒント: 運用データベースを頻繁にバックアップしますが (とにかくこれを行う必要があります)、展開する前にすべての移行をテストするために使用してください。私は、ローカル テストのために常に次のようなスクリプトを実行しています。
mysql -u root -ppassword
drop database mydatabase_dev;
create database mydatabase_dev;
use mydatabase_dev;
source /var/www/bak/mydatabase_backup_2013-10-04-16.28.06.sql
exit
rake db:migrate