我正在寻找一种工具或方法,可以将我庞大的旧数据库转换为活动记录模型定义......就像逆向工程......
答案 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宝石只为我创造了空模型,这并没有给你带来很多。