我正在使用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