【发布时间】:2011-12-04 04:15:14
【问题描述】:
如何在运行时改变当前的 MongoMapper 数据库?
另外,有没有办法将模型映射到名称是动态计算的数据库?例如:
class MyEntity
include MongoMapper::Document
set_database_name "#{some_dynamic_value}"
end
【问题讨论】:
标签: ruby runtime mongomapper
如何在运行时改变当前的 MongoMapper 数据库?
另外,有没有办法将模型映射到名称是动态计算的数据库?例如:
class MyEntity
include MongoMapper::Document
set_database_name "#{some_dynamic_value}"
end
【问题讨论】:
标签: ruby runtime mongomapper
如果您想为模型使用特定数据库,请执行...
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,了解通过覆盖可以造成的损害类型。
【讨论】:
您问题第一部分的答案,只需:
MongoMapper.database = 'dbname'
【讨论】: