Rails迁移;合并两个模型

时间:2010-08-16 18:56:32

标签: ruby-on-rails migration

我有一个产品表和一个ProductGroups来对它们进行分类。现在将删除ProductGroups并将其数据合并到Products表中。

我进行了一次迁移,循环遍历现有的ProductGroup记录,并将它们添加为产品。这样我们就不必手动重新输入数百个组。然后删除product_groups表。

然后我删除了ProductGroup模型,控制器等,并提交了更改。

这一切在开发中都运行良好,但很明显,如果我现在更新生产应用程序,它将首先应用文件系统更改(删除ProductGroup模型等),并且迁移将失败,因为模型不再存在。

解决此问题的最佳方法是什么?我不应该将数据传输放入迁移中吗?感觉就像赶上了22。

1 个答案:

答案 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