2012-05-21 115 views
0

我正在使用Rails 3並希望每當創建用戶時,都應該爲新創建的用戶創建單獨的數據庫。如何爲每個用戶創建單獨的數據庫

例如,如果我在我的應用程序中有13個遷移,那麼應爲新創建的用戶創建13個表。

我怎樣才能實現這個功能?

+2

我不會推薦你做到這一點。當你有很多用戶時,它會使可擴展性非常困難。而你的部署(遷移)將會很長。 –

+0

但我的要求是這樣的,每當新的客戶創建新的數據庫,應建立和與此相關的用戶應在其DB.And客戶插入所有數據的用戶角色也具有管理員和超級管理員 – Kashiftufail

+0

'的https:// github上。 com/kovyrin/db-charmer'可能會有所幫助。但是,這幾乎肯定是一個壞主意。也許你可以在你的需求背後提供更多的推理? – DanS

回答

0

這是一個非常糟糕的主意,以處理Rails中的許多數據庫!

可以在每個需要進行分離,然後應用default_scope各自的模型(或通過self.abstract_class = true使與default_scope的抽象模型,並從繼承你的「共享」模式的表添加一個字段,也就是說,user_id它)。

default_scope,您可能已經猜到,應該是這樣的:

default_scope lambda { where(user_id: current_user_id) } 

如何獲得當前用戶,你可能會問?

模型不能訪問session,這樣你就可以做如下,以「黑客」的範圍,以工作:

#in ApplicationController 
before_filter do 
    user_id = session[:user_id] 
    ActiveRecord::Base.class.send :define_method, :current_user_id, lambda { user_id } 
end 

我猜你上心。

0

這是最好的內線我跟隨並解決我的問題

http://7fff.com/2010/12/02/activerecord-dropcreate-database-run-migrations-outside-of-rails/ 
相關問題