3

モデルに Mongoid を使用する Unicorn で実行されている Sinatra アプリケーションがあります。同じ構造で内容が異なる複数の Mongo データベースがあり、各ユーザーがログインするときに適切なデータベースを選択します。これが Mongoid 3.0 で可能かどうか疑問に思っています。

4

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