2010-01-19 23 views
1

(使用Ruby on Rails和ActiveRecord)一個模型 - Rails中的許多DB連接?

簡而言之:有什麼方法可以使模型對每個請求使用不同的數據庫模式嗎?

爲什麼我需要id:我有一個工作的Intranet應用程序爲一家公司工作,但我決定將其提供給其他公司。 Rails的方式是將company_id添加到每個模型,並一直使用這個範圍。但是爲每家公司製作單獨的數據庫模式會更有意義。有沒有一些標準的方法如何做到這一點?

謝謝!

回答

1

將company_id添加到所有模型絕對是一種方式。您談論的內容很難長期管理,並且確保使用正確的連接來存儲正確的數據可能會非常棘手。

儘管像這樣的差異化分層很煩人,但它可以在相當短的時間內完成並證明,而且之後事情將更容易管理。使用named_scope,使用這樣的屬性不難過濾。

簡單的選擇是多次部署應用程序,每個公司使用不同的database.yml,數據在應用程序級別隔離,而不在應用程序內部。

用Passenger(mod_rails)和一些shell腳本很容易做到這一點。

+1

好的,我會接受你的話。無論如何,本網站不打算討論。謝謝你的回答! – Jakub

2

爲每家公司分別申請一個應用程序實例會出現什麼問題?

+0

我想爲網絡上的任何人提供免費註冊,並且存在許多此類方法的缺陷。應用程序將不得不處理部署,惡意攻擊會通過註冊新用戶來創建新的進程...只是瘋狂的問題 – Jakub