Pergunta

Eu tenho um projeto que usei registro ativo e que gostaria de adicionar alguns novos recursos usando o MongoDB. Em vez de reinventar a roda e reescrever todo o meu site, como posso integrar 2 modelos juntos, um que usa MongoMapper e o outro ActiveRecord (Postgres).

Descobri que outros fizeram isso com sucesso, mas sem exemplos:

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

Por exemplo, eu tenho um modelo (s) STI Mongo (s) de lugares que eu quero relacionar com um modelo de locais do ActiveRecord existente ... ou seja, cidades. E um modelo de usuário baseado no Authlogic ... como posso usá -los em concerto? Eu ficaria grato por um ponteiro ou dois na direção certa.

Obrigado,

Foi útil?

Solução

Isso funcionou lindamente

Modelo de lugares

  key :location_id, Integer, :required => true

    def location
        Location.find(location_id)
    end

Modelo de locais

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

  def find_places
    Property.find_by_location_id(id)
  end

Outras dicas

Você também pode usar o TypeCasting.

Em vez de apenas armazenar o local_id no MongoDB, você pode implementar os métodos de classe, from_mongo e to_mongo, na aula de localização, para permitir que o MongoMapper serialize cada instância de localização de uma maneira segura e amigável de Mongo.

Exemplo simples (istc):

Modelo de lugares

key :location, Location, :required => true

Modelo de localização

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

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

É claro que este é exatamente o mesmo exemplo da resposta anterior. O legal aqui é que você pode serializar uma sequência completa, com mais dados, se necessário, facilitando a consulta e a recuperação de dados do Mongo.

Por exemplo, o Location_ID e as coordenadas, para que você possa imitar um geodb e mapear/reduzir para locais na mesma latitude. (Exemplo estúpido, eu sei)

Referência: Mais impressionantes os que não são degradados

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top