Вы также можете использовать 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