0

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

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

我怎样才能实现这个功能?

4

3 回答 3

0

还可以在http://www.confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-do上查看随 James 幻灯片一起播放的音频/视频。对于每个数据库一个用户的部分,前进到 15:30 左右。

于 2012-05-21T12:46:11.837 回答
0

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

user_id例如,您可以在需要分离的每个表中添加一个字段,然后将其应用于default_scope各自的模型(或使用default_scopevia创建一个抽象模型并self.abstract_class = true从中继承您的“可共享”模型)。

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

我想你明白了。

于 2012-05-21T12:36:34.720 回答
0

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

 http://7fff.com/2010/12/02/activerecord-dropcreate-database-run-migrations-outside-of-rails/
于 2012-05-21T12:43:18.420 回答