2011-07-07 59 views
0
更有效

考虑一个典型的关系型结构:制作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,它将为个人意见个别用户进行数据库检索一个接一个。

更有效的解决方案是将每个类型所需的id放在数组中,执行3次数据库调用以检索它们,将其放入哈希中,然后根据哈希构造json。

这似乎是一个很常见的用例。我正在考虑为此编写自己的递归函数,但是如果任何人都可以指向我已经完成的任务,那将非常棒!

**我正在使用mongoid/mongodb,我不确定它是否在活动记录中以相同的方式工作。

回答

2

可能是你可以尝试mongoid预先加载,那么你就可以查询蒙戈就像AR预先加载

Answer.includes(:comments, :likers) 

该补丁还没有包含在mongoid主分支,但你可以下载它作为一个independednt从here

宝石阅读本pull request更多信息

+0

究竟,我所期待的,谢谢! –