我正在使用Rails 3並希望每當創建用戶時,都應該爲新創建的用戶創建單獨的數據庫。如何爲每個用戶創建單獨的數據庫
例如,如果我在我的應用程序中有13個遷移,那麼應爲新創建的用戶創建13個表。
我怎樣才能實現這個功能?
我正在使用Rails 3並希望每當創建用戶時,都應該爲新創建的用戶創建單獨的數據庫。如何爲每個用戶創建單獨的數據庫
例如,如果我在我的應用程序中有13個遷移,那麼應爲新創建的用戶創建13個表。
我怎樣才能實現這個功能?
還檢查了音頻/視頻沿着去與詹姆斯幻燈片這裏http://www.confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-do。前進到15:30左右,每個數據庫一個用戶的部分。
這是一個非常糟糕的主意,以處理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
我猜你上心。
這是最好的內線我跟隨並解決我的問題
http://7fff.com/2010/12/02/activerecord-dropcreate-database-run-migrations-outside-of-rails/
我不會推薦你做到這一點。當你有很多用戶時,它會使可擴展性非常困難。而你的部署(遷移)將會很長。 –
但我的要求是這樣的,每當新的客戶創建新的數據庫,應建立和與此相關的用戶應在其DB.And客戶插入所有數據的用戶角色也具有管理員和超級管理員 – Kashiftufail
'的https:// github上。 com/kovyrin/db-charmer'可能會有所幫助。但是,這幾乎肯定是一個壞主意。也許你可以在你的需求背後提供更多的推理? – DanS