2010-02-13 105 views
1

我有一個使用Active Record的項目,我想使用MongoDB添加一些新功能。我沒有重新發明輪子並重寫我的整個網站,我怎樣才能將2個模型集成在一起,其中一個使用MongoMapper和另一個ActiveRecord(postgres)。activerecord和mongo/mongo-mapper bridge

我發現,別人已經成功地做到了,但沒有例子:

http://groups.google.com/group/mongomapper/browse_thread/thread/ec5ad00e18e7dd2c/887b8b0b904a8f73?lnk=gst&q=activerecord#887b8b0b904a8f73

例如,我有地方的STI蒙戈模型(一個或多個),我想涉及到現有的位置...即城市的ActiveRecord模型。和一個基於Authlogic的用戶模型......我如何在音樂會中使用它們?我會很感激一個或兩個在正確方向的指針。

感謝,

回答

2

這美麗的工作

地方模型

key :location_id, Integer, :required => true 

    def location 
     Location.find(location_id) 
    end 

地點模型

def self.find_places(id) 
    Property.find_by_location_id(id) 
    end 

    def find_places 
    Property.find_by_location_id(id) 
    end 
1

您還可以使用類型轉換。

而不是僅僅存儲在MongoDB中的LOCATION_ID,可以實現類的方法,from_mongoto_mongo,在Location類,允許mongomapper連載每個位置例如在蒙戈安全和友好的方式。

簡單(ISTC),例如:

地方模式

key :location, Location, :required => true 

選址模型

def self.to_mongo(location) 
    location[:id] 
end 

def self.from_mongo(location_id) 
    find(location_id) 
end 

這當然是完全一樣的例子如前回答。這裏最酷的是你可以序列化一個完整的字符串,如果需要更多的數據,這樣可以更容易地從mongo查詢和檢索數據。

例如,location_id和座標,所以你可以模仿一個geodb和地圖/減少在同一緯度的地方。 (我知道的愚蠢的例子)

參考:More MongoMapper Awesomenes