将Rails放在现有数据库的顶部

时间:2011-01-04 19:31:04

标签: mysql ruby-on-rails

我有一个用PHP / MySQL编写的应用程序(symfony,具体而言),我(可能)喜欢在Rails中重写。我知道如何为尚不存在的表创建脚手架,但是如何让Rails读取我现有的表结构并基于它创建脚手架?

更新:事实证明我可以运行以下命令让Rails为我生成模型:

rails generate scaffold Bank --no-migration

但它没有给我表格。我更喜欢给我形式的东西。

2 个答案:

答案 0 :(得分:29)

答案 1 :(得分:11)

最简单的方法是假装您正在编写一个具有类似数据库架构的全新应用程序 - 然后您可以使用旧架构创建模型和迁移,但不受其限制。在稍后阶段,您可以创建数据库迁移脚本以将所有旧数据复制到新架构中。

我现在正在这样做。这种方法的好处是,您可以利用Rails提供的所有快速开发工具和技术(包括脚手架),而不会因为尝试改造到完全相同的模式而减慢速度。

但是,如果您确定不喜欢这种方法,并且确实需要将新模型映射到现有表,则活动记录提供了许多配置选项,您可以在其中覆盖约定优于配置命名模式并将模型名称映射到表名,设置奇怪命名的ID字段等。例如:

class Mammals < ActiveRecord::Base
  set_table_name "tbl_Squirrels"
  set_primary_key :squirrel_id
end

以上将帮助Rails尝试读取您现有的表,但成功将取决于现有表结构与Rails约定的匹配程度。您可能必须提供更多配置信息才能使其正常工作,即使这样也可能无法正常工作。

最后,值得考虑使用DataMapper,我认为它比ActiveRecord更适合现有的棕色地带数据库,因为它允许你映射一切,但当然你如果您还不知道,则需要学习该API。