前言:
? ? ? Rails一個重要的幫手就是ActiveRecord,它幫助我們快捷得操作各種數據庫,有的時候,我們需要操作的數據庫表,并不在同一個數據庫中(這可能是項目歷史原因,個人覺得除非特殊情況,很少會做出將表分散到多庫設計),這個時候就需要ActiveRecord去連接多個數據庫了。
? ? ? 1. ActiveRecord肯定是支持連接多庫功能的
? ? ? 2. ActiveRecord對每一個數據庫都會維護多個連接,并存放在連接池中(以前有朋友問過我,“連接多庫,連接池沒問題吧?”,當然沒問題了,ActiveRecord對連接池的管理是OK的)
具體操作:
1. 大家都知道,ActiveRecord會默認讀取database.yml的配置信息,我們需要增加一些,加入多個數據庫的配置信息,以下只是提供一個demo,具體配置自己需要調整
2. ActiveRecord操作數據庫表,是需要定義相應的Model的,這里也是一樣,不過我們需要連接多個數據庫,所以,我們的Model需要顯示指定連接所用的配置,不過為了簡化操作,我們為需要連接其他數據庫的Model,定義一個父類
establish_connection() 其實可以接收一個hash作為參數,參數內容就是database.yml里某一個庫的配置信息,不過由于ActiveRecord默認讀取database.yml,所以這里只需要指定database.yml中的一個配置名,以symbol類型傳入,就能自動獲取該配置下的信息(直接傳Hash對象也是OK的,不過略麻煩)
3. 我們隨便定義一個Model,去繼承某一個父類,就可以正常操作其他數據庫的表了
好了,多庫的連接配置就記錄到這里!!