Rails 3を使用していて、ユーザーが作成されるたびに、新しく作成されたユーザー用に個別のデータベースを作成する必要があります。
たとえば、アプリケーションに13の移行がある場合、新しく作成したユーザー用に13のテーブルを作成する必要があります。
この機能を実現するにはどうすればよいですか?
Rails 3を使用していて、ユーザーが作成されるたびに、新しく作成されたユーザー用に個別のデータベースを作成する必要があります。
たとえば、アプリケーションに13の移行がある場合、新しく作成したユーザー用に13のテーブルを作成する必要があります。
この機能を実現するにはどうすればよいですか?
これは、Railsで多くのDBを処理するのは本当に悪い考えです!
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/
また、Jamesのスライドに付随するオーディオ/ビデオもここhttp://www.confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-doで確認してください。データベースごとに1人のユーザーのセクションについては、15:30頃に進んでください。