實現此需求有幾種方法,其中最簡單的方法是使用config/database.yml
和自定義名稱空間模型。
設置類似於下面的內容,使用後綴Rails.env
來遵循命名約定將提供您所概述的功能。
首先,爲每個現有環境的外部數據庫創建新條目。它會幫助你測試功能。
# database.yml
development:
# add configuration as required
otherdb_development:
# add configuration as required
二,添加一個模型爲每個需要在otherdb
數據庫訪問特定的表。我建議增加對這些模型命名空間目錄(otherdb
在下面的例子中),以避免混亂和潛在的重挫:
# /app/models/otherdb
class Otherdb::Foo < ActiveRecord::Base
establish_connection "otherdb_#{Rails.env}"
set_table_name "foo" # customize this if the table name will be different from the classname and is required
end
然後,您可以使用(舉例來說)方法對Otherdb::Foo
和使用結果數據,作爲需要。
謝謝 - 我會試試這個。相關說明:我的開發,測試和生產數據庫都是PostgreSQL,所以我正在運行'pg'gem - 我是否還需要*安裝特定於MySQL的gem來處理遠程MySQL數據庫?這些能夠「一起玩耍」,還是應該期待一些衝突? – jasonmklug
你是對的:如果遠程數據庫是不同的產品,那麼它將需要使用不同的適配器。 – Sasha