【问题标题】:Does Ruby on Rails have a way to import an existing database schema?Ruby on Rails 是否可以导入现有的数据库模式?
【发布时间】:2011-01-29 02:51:25
【问题描述】:

我知道我可以执行 db:create 并创建数据库表或 db:migrate 到新版本,但是我想做的是从现有数据库(所有表)导入架构并为每个数据库生成模型。

ActiveRecord 有能力做到这一点吗?谢谢!

【问题讨论】:

  • 为现有/旧表手动生成模型并不难。从一个简单的模型开始,获取创建的表名、主键和字段名。运行 Rail 的控制台并为第一条记录生成一个查找命令。您将看到生成的 SQL,它将为您提供微调模型所需的内容。大多数遗留表字段命名将违反 ActiveRecord 的假设,因此您必须更正它。我必须将几个数据库捆绑在一起,一旦我掌握了它,它就会变得非常快。不过不要使用迁移——如果有人出轨,你的 DBA 会恨你的。
  • 使用迁移除外。数据库配置是部署过程的一部分,您应该在部署中使用迁移以确保您的数据库与您的应用程序匹配。 DBA 应该参与表的设计,而不是架构的部署。

标签: ruby-on-rails ruby database activerecord


【解决方案1】:

不。 ActiveRecord 是一个 ORM,因此它与生成数据库模式或生成模型没有任何关系。 Rails 也没有这样做的概念。

您必须自己编写数据库迁移并执行此操作。

【讨论】:

    【解决方案2】:

    有一种方法。创建一个新的 Rails 2.2 应用程序(不能是 2.3 或 3.0,gem 自 2007 年以来未更新)。然后安装并使用Magic Model Generator gem。

    这将查看您现有的数据库并从中提取所有模型,就像魔术一样。由于基本 ActiveRecord 模型文件的结构在 Rails 3 中非常相似,因此您可以将它们复制到当前项目并根据需要进行调整。

    【讨论】:

      猜你喜欢
      • 2012-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-02
      相关资源
      最近更新 更多