Сделать to_json более эффективным для вложенных объектов

Рассмотрим типичную реляционную структуру:

Answer has many comments. comments belongs to a user, and have many likers

answers.to_json(:include => {:comments => {:include => :user, :likers}})

Если я вызову to_json , он будет выполнять поиск в базе данных один за другим для отдельного пользователя в отдельных комментариях.

Гораздо более эффективным решением было бы поместить требуемые идентификаторы для каждого типа в массив, выполнить 3 вызова базы данных для их извлечения, поместить их в хэш и создать json в соответствии с хэшем.

Это кажется довольно распространенным вариантом использования. Я думаю написать для этого свою собственную рекурсивную функцию, но если кто-нибудь может указать мне на что-то, что уже было сделано, это будет здорово!

** я использую mongoid/mongodb, я не уверен, работает ли он так же в активной записи.


person ming yeow    schedule 07.07.2011    source источник


Ответы (1)


Может быть, вы можете попробовать монгоидную загрузку, тогда вы можете запросить монго так же, как загрузку AR

 Answer.includes(:comments, :likers)

Патч по-прежнему не включен в основную ветку mongoid, но вы можете загрузить его как независимый гем с здесь.

Прочтите этот запрос на включение для получения дополнительной информации.

person RameshVel    schedule 09.07.2011