2010-05-15 73 views
1

我正在创建一个新的Web应用程序(Rails 3 beta),其中的一部分将访问当前php应用程序正在使用的旧版mysql数据库中的数据。将Rails模型连接到非Rails数据库

我不想修改遗留数据库模式,我只是想读/写它,以及rails应用程序拥有自己的数据库,使用activerecord为新的东西。我为rails应用程序使用mysql,所以我安装了适配器。

这样做的最好方法是什么?例如,我想要联系人来自旧数据库。我应该创建一个联系人控制器,并手动调用sql来获取视图的变量吗? 或者我应该创建一个联系人模型,并定义与数据库中的字段相匹配的属性,并且我可以像Contact.mail_address一样使用它来调用“SELECT mailaddr FROM contacts WHERE id = Contact.id”。

对不起,我从来没有做过很多的Rails标准的东西,这是记录良好。我不确定最好的方法是什么。理想情况下,我希望将联系人尽可能原生地呈现给我的Rails应用程序,以便我可以以REST方式公开他们的API访问权限。

任何建议和代码示例将不胜感激

回答

1

这真的取决于你的遗留数据库如何深奥的。这大大影响了解决方案。如果您的遗留数据库与Rails惯例非常相似,那么使用具有少量定制的模型可能会被证明是最好的方法。不过,我听说有人编写了一个脚本,不断地将旧数据库中的数据重新导入到一个新的数据库中 - 数据库的整个结构非常错误,以至于值得这样做。

+0

感谢您的意见。这是一个相当小的分贝,结构并不完全可怕,只是有点不正常。不过,我宁愿采取使用定制模型的方法。您可以指引我的任何示例/资源?谢谢 – Ryan 2010-05-16 00:16:06

+0

非常多的ActiveRecord文档应该引导你前进。请记住,您始终可以使用虚拟属性,并且如果在rails名称和数据库名称之间存在strait-forward映射,则始终可以编写'method_missing'。 – 2010-05-16 00:32:11