0

Rails 3を使用していて、ユーザーが作成されるたびに、新しく作成されたユーザー用に個別のデータベースを作成する必要があります。

たとえば、アプリケーションに13の移行がある場合、新しく作成したユーザー用に13のテーブルを作成する必要があります。

この機能を実現するにはどうすればよいですか?

4

3 に答える 3

0

これは、Railsで多くのDBを処理するのは本当に悪い考えです!

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 に答える
0

また、Jamesのスライドに付随するオーディオ/ビデオもここhttp://www.confreaks.com/videos/889-railsconf2012-ten-things-you-didn-t-know-rails-could-doで確認してください。データベースごとに1人のユーザーのセクションについては、15:30頃に進んでください。

于 2012-05-21T12:46:11.837 に答える