使to_json对嵌套对象更有效

时间:2011-07-07 06:49:43

标签: ruby-on-rails ruby json mongoid

考虑典型的关系结构:

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,我不确定它是否在活动记录中的工作方式相同。

1 个答案:

答案 0 :(得分:2)

可能你可以尝试mongoid急切加载,然后你就可以像AR eager loading一样查询mongo

 Answer.includes(:comments, :likers)

补丁仍未包含在mongoid master分支中,但您可以从here下载它作为独立宝石

阅读此pull request了解更多信息