Ruby on rails 对于嵌套对象,使to_json更加高效

Ruby on rails 对于嵌套对象,使to_json更加高效,ruby-on-rails,ruby,json,mongoid,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}}) 如果我调用_json,它将在单个注释中为单个用户逐个执行数据库检索 更有效的解决方案是将每种类型所需的ID放入一个数组中,进行3次数据库调用以检索它们,将其

考虑一个典型的关系结构:

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

answers.to_json(:include => {:comments => {:include => :user, :likers}})
如果我调用_json,它将在单个注释中为单个用户逐个执行数据库检索

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

这似乎是一个非常常见的用例。我正在考虑为此编写自己的递归函数,但如果有人能给我指出已经完成的事情,那就太好了


**我使用的是mongoid/mongodb,我不确定它在active record中的工作方式是否相同

可能您可以尝试mongoid即时加载,然后您可以像AR即时加载一样查询mongo

 Answer.includes(:comments, :likers)
该补丁仍然没有包含在mongoid主分支中,但您可以将其作为独立的gem从下载

阅读此内容了解更多信息