您绝对不应该db:rollback
与包含现有数据的表一起使用。
我有一些带有大量数据的生产 RonR 应用程序,迁移表中有 100 多个条目,向调整表添加新迁移是Rails做事的方式。不知道你所说的 lucid 是什么意思,但你的模式和数据模型会随着时间的推移而改变,这是可以预期的。
一个提示。迁移很棒,但它们只是开始,您可以根据需要包含复杂的逻辑来修复现有数据(就像这样)
更改现有表中的数据:
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
另一个提示:经常备份您的生产数据库(无论如何都应该这样做),但在部署之前使用它来测试所有迁移。我一直运行这样的脚本进行本地测试:
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