【问题标题】:'Connect' a rails app to an already existing MySQL DB?将 Rails 应用程序“连接”到现有的 MySQL 数据库?
【发布时间】:2013-06-25 13:54:39
【问题描述】:

所以在我的公司里,我们正在慢慢地转向 Rails 而不是 PHP(准确地说是 Code Igniter)。 所以,我们实际的 PHP 应用程序正在使用 Mysql 数据库,我想将一个新的 Rails 应用程序连接到这个数据库,但同时我们的 PHP 仍在运行,所以我无法更改数据库。

我真的不知道应该从哪里开始使用所有 rails 功能(或者至少尽可能多地使用)。

【问题讨论】:

  • php app 和 rails app 会使用同一个数据库吗?或者 rails 应用程序也有另一个数据库可以使用?
  • @rmagnum2002 他们将使用相同的数据库。
  • 那么你只需使用你的 database.yml 来指向 php 使用的 db 就可以了

标签: mysql ruby-on-rails ruby-on-rails-3 rails-migrations


【解决方案1】:

将您的 Rails 应用程序连接到现有数据库应该没有任何危害。您将需要注意任何违反 Rails 约定的内容(例如,表名是模型的复数)并更改数据库(和您的 php 应用程序)或在 rails 中围绕问题编写程序。

但第一步只是简单地连接到数据库并为现有表制作模型,看看哪些有效,哪些无效。

之后,如有任何具体问题,请在此处发布。

作为建议,备份您的数据库并开始针对该数据库进行编程以构建您的应用程序并确保一切正常运行。

【讨论】:

  • 谢谢!如果表名不符合 rails 约定怎么办?我还不能接触数据库,我需要先用 rails 'hack'。
  • 这是否意味着没有比手动生成模型更好的方法:逐表生成? .NET 我认为只有一个命令。
【解决方案2】:

首先,您应该在 config/database.yml 中设置连接,然后开始逐表生成脚手架(模型、视图和控制器)(检查 Rails 生成命令)。我不确定您是否已经生成了该应用程序。无论如何,生成器还会生成一个迁移脚本,您显然不想运行,因为 db 已经存在。

希望这会有所帮助。

无论如何,一些资源:

http://guides.rubyonrails.org/
http://railsapps.github.io/

【讨论】:

  • 感谢您的回答。我还没有生成应用程序。在开始之前,我一直在等待一些澄清。
【解决方案3】:

在这种情况下,Rails 应用程序需要考虑两个方面:

1:数据库连接

只需将此数据库的凭据放入 database.yml。

默认情况下,像“User”这样的模型会尝试在名为“users”的表中查找记录和属性定义。 ActiveRecord 将假定每个表上都有一个自动递增的整数主键。保存记录时,它将尝试写入名为created_atupdated_at 的列。这些是建立和使用连接时需要注意的几件事。

2:数据库迁移

Rails 使用迁移文件来管理对数据库结构的一系列更改。在正常情况下,构建 Rails 应用程序的人会从一个空数据库开始。

对于现有数据库,我建议进行如下迁移:

class BuildLegacyDbStructure < ActiveRecord::Migration  
  def up
    Mysql2.connection.execute_some_sql_file(  # made-up function
      Rails.root.join('path', 'to', 'file')
    )  
  end

  def down
    # reverse those changes; bring DB down to blank state
  end
end  

另一个选项是完全禁用 Rails/ActiveRecord 的基于迁移的数据库管理。例如,当您生成新模型时,Rails 将生成迁移。因此,如果您的 PHP 应用程序中有一个现有 users 表,并且您想创建一个 rails 模型来使用该表,您可以运行rails generate model User --no-migration 之类的东西。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2019-04-07
    • 2012-10-09
    • 2011-07-28
    • 2014-11-26
    • 2014-11-05
    • 1970-01-01
    相关资源
    最近更新 更多