如何从数据库生成活动记录模型

时间:2011-02-28 05:22:59

标签: ruby database activerecord

我正在寻找一种工具或方法,可以将我庞大的旧数据库转换为活动记录模型定义......就像逆向工程......

5 个答案:

答案 0 :(得分:6)

这不是一个逆向工程问题,而是“你的遗留数据库是否符合活动记录约定”问题。大多数人没有,根据我的经验,在数据端进行一些迁移工作几乎更容易使其处于一种状态,以便它确实遵守这些约定。 Rails是一款非常自以为是的软件,你对它的争论越少,你就越幸福。

我的两分钱......

答案 1 :(得分:1)

抱歉,我也不知道一个工具。但创建一个活跃的记录模型非常简单,因为微薄的显示它。此外,您可能必须描述表名和主键:

class Artikelgruppe < ActiveRecord::Base
  set_table_name "tblArtGrp"
  set_primary_key "ArtGrpID"
end

由于我的Rails应用程序仅使用遗留数据库的一小部分,因此我更喜欢在数据库中创建特定于我的应用程序需求的视图。我真的有问题在Rails中描述一个连接,例如7个模型,但是创建一个用于连接数据库中的7个表的视图非常容易。

为什么Rails人仍然认为他们是宇宙的中心?我有十几个用不同语言编写的应用程序,共同点是数据库。想象一下,我将不得不更改数据库以使Rails满意...

答案 2 :(得分:0)

ActiveRecord会为您做到这一点。您实际上不必在模型中指定列。假设有一个完整的users表,只需将以下内容放在app/models/user.rb

中即可
class User < ActiveRecord::Base

end

之后可以添加您想要执行的其他验证。

那就是说,你可能不想这样做。对于试图移植旧项目的人来说,Rails是非常困难的,因为Rail的“约定优于配置”的座右铭。如果您尝试将Rails弯曲到现有的数据库架构,那将是一场艰苦的战斗。

答案 3 :(得分:0)

看一下RMRE gem。这是由RMRE作者撰写的introducing blog post

答案 4 :(得分:0)

RMRE似乎是这里列出的两个中最好的。您可以在创建一个特殊的rare_map.yml之后在rails根目录中运行它,这只是您希望它扫描的数据库的数据库配置。如果您在rails之下,那么可以在./config中进行,如果不在,则在。或者根目录中。

一件好事:对于非rails应用程序,它将生成一个[module] _base.rb,它创建一个单独的ActiveRecord :: Base,它会将类填充到您选择的模块中并创建一个单独的ActiveRecord :: Base为每个人。

RMRE生成的模型具有自动填写的所有关系(belongs_to,has_many等)。它适用于非rails应用程序,或者如果您在配置中指定它,则将模型填充到模块中。

上面提到的rare_map宝石只为我创造了空模型,这并没有给你带来很多。