2

テーブルは、異なるデータベース/テーブルに動的にマップする必要がある Mongoid モデルです

# app/models/table.rb
class Table
  include Mongoid::Document
end

# in app/controllers/some_controller.rb
def index
   Table.connection.database = :other_database # <- How to do this ???
   Table.table_name = params[:id] # <- How to do this ???
   @records = Table.all
end

私はテーブルクラスに次のことを望みます:

  1. 現在ログインしているユーザーに応じて、(同じmongodbサーバー接続で)異なるデータベースへのリクエストごとに構成されます
  2. テーブル名も同じ


私が知っている編集:

 Mongoid.configure do |config|
   name = "control_development"
   host = "localhost"
   config.master = Mongo::Connection.new.db(name)
   config.slaves = [
  Mongo::Connection.new(host, 27018, :slave_ok => true).db(name)
   ]
   config.persist_in_safe_mode = false
 end

しかし、それは特定のモデルで機能しますか (?) :

  # like this i mean
  class User
  include Mongoid::Document

  configure do |config| # configure only this model's connection
    name = "other_control_development"
    host = "localhost"
    config.master = Mongo::Connection.new.db(name)
    config.slaves = [
            Mongo::Connection.new(host, 27018, :slave_ok => true).db(name)
    ]
    config.persist_in_safe_mode = false
  end

 end
4

1 に答える 1

1

これを使用して、複数のデータベースに接続できます。

サンプル構成: https://github.com/mongoid/mongoid/blob/master/spec/config/mongoid_with_multiple_mongos.yml

あなたのモデルでは:

set_database :secondary

現在、実行時にデータベースを希望どおりにスワップすることはできません。これはtodoリストにありますが、注意してください。

于 2011-06-07T18:32:51.153 に答える