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

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

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

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

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

在那之后,在这里发布任何具体问题。

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

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

希望这个对你有帮助。

无论如何,一些资源:

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

在这种情况下,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应用程序中有一个现有的用户表,并且您想要使用这个表的rails模型,那么您将运行类似rails generate model User --no-migration