activerecord и mongo / mongo-mapper bridge - PullRequest
       32

activerecord и mongo / mongo-mapper bridge

1 голос
/ 13 февраля 2010

У меня есть проект, в котором я использовал 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, которые я хочу связать с существующей моделью местоположений ActiveRecord ... то есть с городами. и пользовательская модель, основанная на Authlogic ... как я могу использовать их совместно? Я был бы благодарен за указатель или два в правильном направлении.

Спасибо

Ответы [ 2 ]

2 голосов
/ 14 февраля 2010

Это прекрасно работает

мест модель

  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 голос
/ 27 августа 2010

Вы также можете использовать Typecasting.

Вместо того, чтобы просто хранить location_id в mongodb, вы можете реализовать методы класса from_mongo и to_mongo в классе Location, чтобы позволить mongomapper сериализовать каждый экземпляр 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

Это, конечно, тот же пример, что и в предыдущем ответе. Крутая вещь здесь заключается в том, что вы можете сериализовать полную строку с большим количеством данных, если это необходимо, что упростит запрос и извлечение данных из Монго.

Например, location_id и координаты, так что вы можете имитировать геодб и карту / уменьшить для мест на одной широте. (глупый пример, я знаю)

Ссылка: Больше MongoMapper Awesomenes

...