【问题标题】:Change MongoMapper current database at runtime在运行时更改 MongoMapper 当前数据库
【发布时间】:2011-12-04 04:15:14
【问题描述】:

如何在运行时改变当前的 MongoMapper 数据库?

另外,有没有办法将模型映射到名称是动态计算的数据库?例如:

class MyEntity
    include MongoMapper::Document
    set_database_name "#{some_dynamic_value}"
end

【问题讨论】:

    标签: ruby runtime mongomapper


    【解决方案1】:

    如果您想为模型使用特定数据库,请执行...

    class MyEntity
      include MongoMapper::Document
      set_database_name "entities_database_development"
    end
    

    您可以在那里进行字符串插值,但这只有在加载类时才能解决,然后再也不会。

    要在每次需要数据库时计算数据库名称,请覆盖类或实例数据库方法。

    class MyEntity
      include MongoMapper::Document
      def database
        connection.db("my_database_#{rand}_development")
      end
    end
    

    请参阅persistence plugin source,了解通过覆盖可以造成的损害类型。

    【讨论】:

    • 优秀。正是我想要的。
    【解决方案2】:

    您问题第一部分的答案,只需:

    MongoMapper.database = 'dbname'
    

    【讨论】:

    • 我什至不需要创建新连接?只需调用 accessor= 即可为我更改数据库?
    • 正确。 MongoMapper 将使用现有的连接。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2016-09-19
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2018-05-18
    相关资源
    最近更新 更多