2011-12-04 27 views
1

如何在運行時更改當前MongoMapper數據庫?在運行時更改MongoMapper當前數據庫

另外,有沒有一種方法將模型映射到名稱是動態計算的數據庫?例如:

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

回答

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瞭解您可以通過覆蓋來實現哪種損害。

+0

卓越。正是我在找的東西。 – EdMelo

0

回答你的問題的第一部分,只是做:

MongoMapper.database = 'dbname' 
+0

我什至不需要創建一個新的連接?只需調用accessor =會爲我更改數據庫? – EdMelo

+0

正確。 MongoMapper將使用現有的連接。 –