我设法做到这一点,如下所示。
1)在新应用程序中创建数据库模式。在这个阶段,我不担心关联,因为我会手动设置关联ID。
2)在一个文件I在旧的应用程序称为transition.rb
,我定义迁移类每个类的我想传送例如
class NewProduct < ActiveRecord::Base
file = File.open("#{Rails.root}" + "/config/database.yml")
dbconfig = YAML::load(file)
establish_connection(dbconfig["development"])
self.table_name = "products"
end
通过添加mysql2
宝石老MongoDB的应用程序,我可以使用这个模式来连接在相关表格:该类Product
,我使用下面的模式定义了一个名为NewProduct
过渡分类新应用程序。
3)对于每个类,我然后迭代现有记录,通过迁移类将它们映射到新表。 MySQL没有可用于直接映射的列在MySQL中没有Array
列类型。对于这些情况,我创建了一个单独的类并手动创建关联。
有一定的试验和错误的某些部分,但总体上已经做得很不错。我无法以编程方式完成的唯一部分是将上传的图像和文档关联到相关产品,但由于这些上传的文件命名结构,因此创建关联不需要大量手动工作。
对于那些有兴趣谁this is the gist of the file I used。