モデルに Mongoid を使用する Unicorn で実行されている Sinatra アプリケーションがあります。同じ構造で内容が異なる複数の Mongo データベースがあり、各ユーザーがログインするときに適切なデータベースを選択します。これが Mongoid 3.0 で可能かどうか疑問に思っています。
質問する
1054 次
3 に答える
5
データベースを切り替えたい場合はMongoid.override_database
、スレッドセーフです。
Mongoid.override_database("client_db_name") # change the database
Mongoid.override_database(nil) # reset the database
例:
class ApplicationController < ActionController::Base
before_filter :switch_database
after_filter :reset_database
private
def switch_database
client_ref = params[:client_id]
Mongoid.override_database("my_db_name_#{client_ref}")
end
def reset_database
Mongoid.override_database(nil)
end
end
ドキュメントはここにあります。
于 2013-02-23T12:34:32.993 に答える
3
with
すべてのクエリの前に演算子を使用できます。
Model.with(database: method_to_get_the_db_name).create
于 2013-02-19T17:33:45.593 に答える