2012-05-21 78 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/ 
相关问题