2013-04-22 54 views
0

使用Rails 3.2.13我有一個使用某些通信設備(比如200-300)的應用程序,每個設備都使用自己的MySQL數據庫,命名約定如xy000 + device.id(即xy000001,xy000012,等等。)。每個設備(數據庫)有幾個從ActiveRecord :: Base繼承的模型(表)。當用戶登錄到應用程序時,他選擇他想要使用的設備。當然,多個併發用戶可以使用不同的設備,以便應用程序能夠同時連接到多個數據庫。Rails 3.2多個數據庫

的問題是:我怎麼能建立模型,使

ActiveRecord::Base.establish_connection 

電話嗎?如何根據用戶輸入選擇目標數據庫,以便我可以每次使用與不同數據庫連接的同一模型?

希望解釋清楚。如果沒有,我可以更精確... 謝謝!

回答

0

在你的database.yml文件中用你想使用的名字創建一個連接。舉例來說,如果你的名字連接產品你可能有類似下面的連接:

products: 
    adapter: mysql2 
    encoding: utf8 
    reconnect: false 
    database: my_database 
    pool: 5 
    username: root 
    password: abc123 
    host: 127.0.0.1 

然後在模型中,延長的ActiveRecord :: Base的建立,像這樣的連接:

class Product < ActiveRecord::Base 
    establish_connection :products 
end 
+0

感謝您的回覆,但不幸的是這種做法是不可能的。正如我所說,我有多個名稱不同的數據庫。每個模型必須根據用戶輸入連接到數據庫名稱 - 因此,在您的示例中,產品模型不能使用:產品適配器,因爲它已修復到my_database。 – user980145 2013-04-23 05:22:06

相關問題