Pregunta

Tengo un proyecto que he utilizado Active Record, y que me gustaría añadir algunas nuevas características usando MongoDB. En lugar de reinventar la rueda y volver a escribir toda mi sitio, ¿cómo puedo integrar 2 modelos juntos, uno que utilizan MongoMapper y los otros ActiveRecord (postgres).

He encontrado que otros lo han hecho con éxito, pero no hay ejemplos:

http: // grupos .google.com / grupo / MongoMapper / browse_thread / hilo / ec5ad00e18e7dd2c / 887b8b0b904a8f73? lnk = gst y q = activerecord # 887b8b0b904a8f73

Por ejemplo, tengo un modelo STI Mongo (s) de Lugares que quiero relacionar con un modelo ActiveRecord existente de Ubicaciones ... es decir, las ciudades. y un modelo de usuario basado en Authlogic ... cómo puedo usar en concierto? Estaría agradecido por un puntero o dos en la dirección correcta.

Gracias,

¿Fue útil?

Solución

Esto funcionó muy bien

lugares modelo

  key :location_id, Integer, :required => true

    def location
        Location.find(location_id)
    end

ubicaciones modelo

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

  def find_places
    Property.find_by_location_id(id)
  end

Otros consejos

También puede utilizar encasillamiento.

En lugar de simplemente almacenar el location_id en mongodb, se puede aplicar a métodos de clase, y from_mongo to_mongo, en la clase Location para permitir MongoMapper para serializar cada instancia Localización de una manera segura y amigable mongo.

Simple (ISTC) ejemplo:

modelo lugares

key :location, Location, :required => true

Lugar modelo

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

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

Esto, por supuesto, es exactamente el mismo ejemplo que en la respuesta anterior. Lo interesante aquí es que se puede serializar una cadena completa, con más datos, si es necesario, por lo que es más fácil de consultar y recuperar datos de Mongo.

Por ejemplo, el location_id y las coordenadas, por lo que puede imitar un GeoDB y map / reduce de lugares en la misma latitud. (Estúpida ejemplo, sé)

Referencia: Más MongoMapper Awesomenes

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top