1

我有一个使用 Active Record 的项目,我想使用 MongoDB 添加一些新功能。与其重新发明轮子并重新编写我的整个网站,不如我如何将 2 个模型集成在一起,一个使用 MongoMapper,另一个使用 ActiveRecord (postgres)。

我发现其他人已经成功地做到了,但没有例子:

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

例如,我有一个 STI Mongo 模型的 Places,我想将其与现有的 ActiveRecord Locations 模型相关联......即城市。和一个基于 Authlogic 的用户模型......我如何一起使用它们?我将不胜感激在正确方向上的一两个指针。

谢谢,

4

2 回答 2

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
于 2010-02-14T01:21:32.587 回答
1

您还可以使用类型转换。

除了将 location_id 存储在 mongodb 中,您还可以实现类方法,from_mongo并且to_mongo在 Location 类中允许 mongomapper 以 mongo 安全友好的方式序列化每个 Location 实例。

简单(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 并为同一纬度的地点进行地图/缩减。(愚蠢的例子,我知道)

参考:更多 MongoMapper Awesomenes

于 2010-08-27T14:09:13.107 回答