如何在运行时更改当前的MongoMapper数据库?
另外,有没有办法将模型映射到名称动态计算的数据库?例如:
class MyEntity
include MongoMapper::Document
set_database_name "#{some_dynamic_value}"
end
答案 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'