【问题标题】:Beginner Ruby On Rails: Reading rows from 1 sqlite3 database and populating another sqlite3 database in my rails app初学者 Ruby On Rails:从 1 个 sqlite3 数据库中读取行并在我的 rails 应用程序中填充另一个 sqlite3 数据库
【发布时间】:2012-03-26 13:59:15
【问题描述】:

我是 Rails 开发的新手。我有一个简单的问题,但我很困惑,无法在谷歌上找到帮助。

我在 Rails 应用程序之外有一个 sqlite3 数据库。我需要以某种方式将这些数据输入到我的应用中。

有哪些选择?

我可以吗 1)以某种方式将sqlite3数据库及其内容导入我的rails应用程序?如果是这样,需要进行哪些调整,因为我知道 rails 将列插入数据库:“id”、“created at”、“updated at”

2) 如果我无法将 sqlite3 导入到我的 rails 应用程序中,我可以从中读取内容并将数据输入到我的模块,然后输入我的数据库吗?

如果这些方法可行,哪些方法是可行的?建议使用哪种方法?

有人可以指点我有关此主题的一些资源吗?我到底应该在谷歌上为这个主题寻找什么?有关键字吗?

还有人知道活跃的优秀 Rails 论坛吗?

谢谢,

【问题讨论】:

    标签: ruby-on-rails sqlite


    【解决方案1】:

    您可以在 database.yml 中指定到该数据库的单独连接。然后为该数据库中的表创建一个模型。在该模型中,使用建立连接告诉 ActiveRecord 从其他数据库中获取该模型的数据。

    查看 to_model 的一些示例。这将向您展示如何将数据转换到您的新数据库中。

    就插入 id、created_at 和 updated_at 的 rails 而言,这只发生在您使用迁移创建新表时。它不会在没有您告知的情况下尝试更改旧数据库中的任何表。事实上,这些字段在新表中也是可选的。

    【讨论】:

    • 谢谢约翰科尔文。我需要对 database.yml 文件进行任何更改吗?
    • 是的。您需要创建一个新连接。因此,复制现有的连接设置并将它们粘贴回 database.yml。将连接重命名为“legacy”之类的名称。然后更改连接信息以连接到您的旧数据库。制作一个名为LegacyBase 的模型,并在该模型中放入establish_connection "legacy"。那么所有遗留模型都应该从 LegacyBase 扩展。这意味着他们的数据来自旧数据库。然后在你的类中编写一些 to_model 方法,将它们转换到新的数据库中并运行它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-15
    • 2013-12-11
    • 2018-06-08
    • 2015-07-16
    • 2015-05-07
    • 1970-01-01
    相关资源
    最近更新 更多