将rails应用程序'连接'到已存在的MySQL数据库?

时间:2013-06-25 13:54:39

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

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

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

3 个答案:

答案 0 :(得分:3)

将rails应用程序连接到现有数据库应该没有任何损害。你需要注意任何违反rails约定的东西(例如,表名是多个模型),要么改变数据库(和你的php应用程序),要么在rails中解决问题。

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

之后,在此发布任何具体问题。

作为建议,请备份数据库并开始编程以构建应用程序,并确保一切正常。

答案 1 :(得分:2)

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

希望这有点帮助。

无论如何,有些资源:

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

答案 2 :(得分:0)

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

1:数据库连接

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

默认情况下,诸如“用户”之类的模型将尝试在名为“用户”的表中查找记录和属性定义。 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应用程序中有一个现有用户表,并且您想创建一个Rails模型来使用该表,则可以运行rails generate model User --no-migration之类的东西。