考虑典型的关系结构:
Answer has many comments. comments belongs to a user, and have many likers
answers.to_json(:include => {:comments => {:include => :user, :likers}})
如果我调用to_json,它将在个别评论中逐个为个人用户执行数据库检索。
更有效的解决方案是将每个类型所需的id放入数组中,执行3次数据库调用以检索它们,将其放入散列中,然后根据散列构造json。
这似乎是一个非常常见的用例。我正在考虑为此编写自己的递归函数,但如果有人能指出我已经完成的事情,那就太棒了!
**我正在使用mongoid / mongodb,我不确定它是否在活动记录中的工作方式相同。
答案 0 :(得分:2)
可能你可以尝试mongoid急切加载,然后你就可以像AR eager loading一样查询mongo
Answer.includes(:comments, :likers)
补丁仍未包含在mongoid master分支中,但您可以从here下载它作为独立宝石
阅读此pull request了解更多信息