【问题标题】:Building Ruby on Rails App with an existing Mysql db使用现有的 Mysql 数据库构建 Ruby on Rails 应用程序
【发布时间】:2013-02-04 05:28:17
【问题描述】:

我有一个包含大量数据和表的 Mysql 数据库。但我需要知道如何在我的新 Rails 应用程序中使用这个 Mysql 数据。从现在开始,我一直在学习 Rails。我知道创建脚手架的基础知识,脚手架反过来创建模型和控制器,但我不清楚如何导入数据库并使用它。 任何人都可以解释或提供有关如何克服此问题的链接。

这是我在运行一个简单的脚手架后的迁移,我在那里添加了一个电子邮件字符串后运行了rake db:migrate,但什么也没发生......:

class CreateProducts < ActiveRecord::Migration
  def change
    create_table :products do |t|
      t.string :title
      t.text :description
      t.string :image_url
      t.decimal :price, :precision => 8, :scale => 2
>>    t.string :email
      t.timestamps
    end
  end
end

【问题讨论】:

  • 一旦你设置database.yml指向正确的数据库,你可以使用rake db:schema:dump创建schema.rb。我不知道为您生成模型的任何好方法。

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


【解决方案1】:

如果您需要将当前数据库中的数据导入到应用程序的数据库中,我建议您使用Sequel Pro。这是一个很棒的 MySQL 图形用户界面。您可以使用它导出所需的数据库,例如 .csv 文件,然后将其导入新数据库。

关于您的迁移,运行脚手架并运行 rake db:migrate 只会设置您的数据库;它不会添加任何数据。因此,在这里,您已将其设置为创建 products 表,并为其属性指定数据类型。

但要在其中获取数据,您只能通过应用程序的表单或导入数据来实现。

【讨论】:

    【解决方案2】:

    在此之前,请尝试了解有关 Rails 及其约定的更多信息。可能您需要调整您的数据库方案。 或者您可以启动一个应用程序,然后导入数据,甚至通过 SQL 或 CSV。 迁移数据可能是一项乏味的工作,但却是必要的。

    您可以查看this gem 看看它是否对您的情况有所帮助,因为这取决于您的实际架构。

    或者您可以按照此idea 并从旧数据库加载数据库架构和数据。如果您不遵循 Rails 约定,它将失败。

    【讨论】:

      【解决方案3】:

      我在过去的项目中已经这样做了,而且使用 Rails 绝对可以。

      您可以在 Ruby on Rails 中使用旧数据库,也可以在同一个 Rails 项目中使用多个数据库。

      有一本书详细介绍了如何将 Rails 与旧版 MySQL 数据库一起使用,以及如何调整模型以更好地与旧版表配合使用: http://www.amazon.com/Pro-Active-Record-Databases-Experts/dp/1590598474

      为遗留表使用脚手架可能不会让您走得太远,因为您需要更改大量生成的代码来修复命名等。

      如果您的 Rails 应用程序也有新的表/模型,我建议您在 Rails 项目中使用两个数据库:一个用于旧数据,一个用于新模型。

      【讨论】:

        猜你喜欢
        • 2015-01-28
        • 1970-01-01
        • 1970-01-01
        • 2014-03-03
        • 1970-01-01
        • 2012-07-29
        • 2010-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多