2011-07-07 57 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

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