我正在使用 Rails 3,并且希望无论何时创建用户,都应该为新创建的用户创建单独的数据库。
例如,如果我的应用程序中有 13 个迁移,那么应该为新创建的用户创建 13 个表。
我怎样才能实现这个功能?
我正在使用 Rails 3,并且希望无论何时创建用户,都应该为新创建的用户创建单独的数据库。
例如,如果我的应用程序中有 13 个迁移,那么应该为新创建的用户创建 13 个表。
我怎样才能实现这个功能?
还可以在http://www.confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-do上查看随 James 幻灯片一起播放的音频/视频。对于每个数据库一个用户的部分,前进到 15:30 左右。
在 Rails 中处理许多数据库是一个非常糟糕的主意!
user_id
例如,您可以在需要分离的每个表中添加一个字段,然后将其应用于default_scope
各自的模型(或使用default_scope
via创建一个抽象模型并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
我想你明白了。
这是我关注并解决我的问题的最佳帖子
http://7fff.com/2010/12/02/activerecord-dropcreate-database-run-migrations-outside-of-rails/