所以在我的公司,我们正在慢慢转向Rails而不是PHP(准确地说是Code Igniter)。 所以,我们实际的PHP应用程序使用的是Mysql DB,我想将新的Rails应用程序连接到这个数据库,但同时我们的PHP仍在运行,所以我无法更改数据库。
我真的不知道应该从哪里开始使用所有导轨功能(或者至少尽可能多)。
答案 0 :(得分:3)
将rails应用程序连接到现有数据库应该没有任何损害。你需要注意任何违反rails约定的东西(例如,表名是多个模型),要么改变数据库(和你的php应用程序),要么在rails中解决问题。
但第一步只是连接到数据库并为现有表格制作模型,看看哪些有效,哪些无效。
之后,在此发布任何具体问题。
作为建议,请备份数据库并开始编程以构建应用程序,并确保一切正常。
答案 1 :(得分:2)
好吧,首先你应该在config / database.yml中设置连接,然后开始按表生成脚手架(模型,视图和控制器)表(检查Rails生成命令)。我不确定你是否已经生成了应用程序。无论如何,生成器还将生成一个迁移脚本,您显然不希望它运行,因为数据库已经存在。
希望这有点帮助。
无论如何,有些资源:
答案 2 :(得分:0)
在这种情况下,需要考虑Rails应用的两个方面:
只需将此数据库的凭据放入database.yml中。
默认情况下,诸如“用户”之类的模型将尝试在名为“用户”的表中查找记录和属性定义。 ActiveRecord将假定每个表上都有一个自动递增的整数主键。保存记录时,它将尝试写入名为created_at
和updated_at
的列。在建立和使用连接时,请注意以下几点。
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
之类的东西。