如何为每个用户创建单独的DataBase

时间:2012-05-21 10:07:40

标签: ruby-on-rails

我正在使用Rails 3并且希望无论何时创建用户,都应该为新创建的用户创建单独的数据库。

例如,如果我的应用程序中有13个迁移,那么应该为新创建的用户创建13个表。

我如何才能实现此功能?

3 个答案:

答案 0 :(得分:0)

在Rails中处理许多数据库是一个非常糟糕的主意!

您可以在每个需要分离的表中添加一个字段,例如user_id,然后将default_scope应用于各自的模型(或使用{{1}创建一个抽象模型通过default_scope并继承你的“可共享”模型。)

您可能会猜到,self.abstract_class = true应该是这样的:

default_scope

如何获得当前用户,您可能会问?

模型无法访问default_scope lambda { where(user_id: current_user_id) } ,因此您可以进行以下“黑客攻击”以使您的范围有效:

session

我猜你有这个主意。

答案 1 :(得分:0)

这是我关注的最佳帖子并解决我的问题

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

答案 2 :(得分:0)

同时查看詹姆斯幻灯片http://www.confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-do附带的音频/视频。对于每个数据库一个用户的部分,请前进到15:30左右。