2

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

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

4

3 回答 3

3

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

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

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

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

于 2013-06-25T13:59:48.220 回答
2

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

希望这个对你有帮助。

无论如何,一些资源:

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

于 2013-06-25T14:01:15.337 回答
0

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

1:数据库连接

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

默认情况下,像“User”这样的模型会尝试在名为“users”的表中查找记录和属性定义。ActiveRecord 将假定每个表上都有一个自动递增的整数主键。保存记录时,它将尝试写入名为created_at和的列updated_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.

于 2018-08-06T22:09:26.963 回答