gpt4 book ai didi

mysql - 从 MongoDB 应用程序访问 ActiveRecord 模型

转载 作者:行者123 更新时间:2023-11-29 23:26:00 25 4
gpt4 key购买 nike

我有一个在 Rails 3 中构建的旧应用程序,使用 MongoDB 作为数据库(Mongoid 作为适配器)。

我正在将其移至 Rails 4 并使用 MySQL。我的计划是通过脚本将集合映射到它们自己的表中并复制数据。我很乐意做那部分。我一生都无法弄清楚如何连接到 MySQL 数据库。

我已经在 Rails 4 和新数据库中创建了新应用程序,以及作为示例的 Contacts 表,该表映射到 MongoDB 中的集合。我想要做的是找到Mongo中的所有联系人,然后连接到MySQL DB并将记录插入到表中。

我该如何完成最后一部分?

谢谢

罗宾

最佳答案

我设法做到这一点如下。

1) 在新应用程序中创建数据库架构。在这个阶段,我并不担心关联,因为我将手动设置关联 ID。

2) 在旧应用程序中名为 transition.rb 的文件中,我为每个要传输的类定义了迁移类,例如对于 Product 类,我使用以下模式定义了一个名为 NewProduct 的转换类:

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 gem 添加到旧的 MongoDB 应用程序,我能够使用此模式连接到新应用程序中的相关表。

3) 对于每个类,我都会迭代现有记录,通过迁移类将它们映射到新表。存在一些挑战,MySQL 没有可用于直接映射的列,例如MySQL 中没有Array 列类型。对于这些情况,我创建了一个单独的类并手动创建关联。

确实有一些尝试和错误的部分,但总的来说,它运作得很好。我无法以编程方式完成的唯一部分是将上传的图像和文档关联回相关产品,但是由于这些上传的文件命名结构,创建关联不需要大量的手动工作。

对于那些有兴趣的人this is the gist of the file I used .

关于mysql - 从 MongoDB 应用程序访问 ActiveRecord 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26961969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com