Вопрос

У меня есть проект, в котором я использовал Active Record и в который я хотел бы добавить некоторые новые функции с помощью MongoDB.Вместо того, чтобы заново изобретать велосипед и переписывать весь свой сайт, как мне объединить две модели, одну, которая использует MongoMapper, а другую ActiveRecord (postgres).

Я обнаружил, что другие сделали это успешно, но примеров нет:

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

Например, у меня есть модель(и) мест STI Mongo, которую я хочу связать с существующей моделью местоположений ActiveRecord...то есть города.и модель пользователя на основе Authlogic...как я могу использовать их на концерте?Буду признателен за пару указателей в правильном направлении.

Спасибо,

Это было полезно?

Решение

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

модель места

  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

Другие советы

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

Вместо того, чтобы просто хранить location_id в mongodb, вы можете реализовать методы класса, from_mongo и to_mongo, в классе Location, чтобы позволить mongomapper сериализовать каждый экземпляр Location безопасным и удобным способом mongo.

Простой (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 и координаты, чтобы вы могли имитировать геоданную базу данных и отображать/уменьшать места на одной и той же широте.(глупый пример, я знаю)

Ссылка: Больше потрясающих возможностей MongoMapper

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top