在运行时更改MongoMapper当前数据库

时间:2011-12-04 04:15:15

标签: ruby runtime mongomapper

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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,了解通过覆盖可以造成的伤害类型。

答案 1 :(得分:0)

问题第一部分的答案,就是这样做:

MongoMapper.database = 'dbname'