我有一个产品表和一个ProductGroups来对它们进行分类。现在将删除ProductGroups并将其数据合并到Products表中。
我进行了一次迁移,循环遍历现有的ProductGroup记录,并将它们添加为产品。这样我们就不必手动重新输入数百个组。然后删除product_groups表。
然后我删除了ProductGroup模型,控制器等,并提交了更改。
这一切在开发中都运行良好,但很明显,如果我现在更新生产应用程序,它将首先应用文件系统更改(删除ProductGroup模型等),并且迁移将失败,因为模型不再存在。
解决此问题的最佳方法是什么?我不应该将数据传输放入迁移中吗?感觉就像赶上了22。
答案 0 :(得分:2)
我没有得到问题但是如果你想在一次迁移中做所有事情,它可能看起来像
class UpdateProducts < ActiveRecord::Migration
def self.up
add_column :products, :columns, :types
Product.all.each do |product|
product.update_attributes(ProductGroup.find_by_id(product.product_group_id).attributes)
product.save
end
system("ruby script/destroy scaffold product_group")
drop_table :product_groups
end
def self.down
remove_column :products, :columns
create_table :product_groups
end
end