2011-06-10 31 views
0

我想讓我的Entry模型使用多個數據庫。當客戶加入網絡時,會自動爲該客戶創建一個新數據庫。其他模型將使用相同的數據庫。這可能在鐵軌?在rails中的多個數據庫連接

+0

你谷歌你的問題?這已被問了上百次。 – Wukerplank 2011-06-10 11:08:53

+0

http://www.google.com/search?q=multiple+database+connection+in+rails&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:en-US:official&client=firefox-a – 2011-06-10 15:33:06

+0

I會真的建議不要試圖這樣做。你需要爲每個客戶建立一個數據庫連接,這根本不能很好地擴展。是否有理由不能將所有客戶數據存儲在同一個數據庫中? – 2011-06-10 17:16:05

回答

0

滑稽的,我只是想出了一個解決方案,這十分鐘前...

這裏去...

首先定義你的database.yml中的單獨的數據庫連接

該礦擁有

production: 
adapter: mysql 
-etc etc- 

然後,我添加一個額外的一個(對我來說,我有一箇舊的數據庫我想連接到...)

legacy_production: 
    adapter: mysql 
    -etc etc- 

重複此酌情

我做的下一件事是創建「LIB」叫「legacy_model.rb」一個新的文件,它看起來很簡單,像這樣

require 'active_record' 

    class LegacyModel < ActiveRecord::Base 
     self.abstract_class = true 
     establish_connection "legacy_#{RAILS_ENV}" 
    end 
不同的環境

現在,要利用這一點,我只是創建一個類/模型,並從LegacyModel繼承這樣的...

class User < LegacyModel 
    -any validations etc you might want- 
end 

瞧,它會訪問該文件gacy數據庫而不是我正在使用的那個。

有可能是更好的解決方案,但這似乎適用於我 - 希望它有幫助!

+0

哦,麻煩,我*只*注意到你想要相同的模型訪問多個數據庫,我的答案並沒有真的這麼做!呸!但希望它會給你一些起點。 – Lee 2011-06-10 11:20:50

+0

非常感謝先生 – rubyruby 2011-06-10 11:36:38

0

是否有特定的架構原因需要使用單獨的數據庫?我想象一個更普通的解決方案,像'multihoming'這樣的應用程序就是在你的Entry模型上存儲一個account_id並且擁有一個數據庫。