Рассмотрим типичную реляционную структуру:
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, я не уверен, работает ли он так же в активной записи.