2010-05-15 32 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