在Rails中有效地提取多个级别的数据

时间:2011-01-28 14:14:39

标签: ruby-on-rails activerecord

我正在尝试构建一个打印流程,其中包括使用Rails打印一批财务应用程序。

我正在打印大约100个应用程序,其中包含多个级别的数据(应用程序本身,子模型及其子模型)。

目前该页面的效率非常低,因为它正在进行大量的N + 1查询,导致性能不佳。

问题是,是否有一种从数据库中获取此数据的有效方法。我尝试使用includes()为所有子模型提取表单,但这对于低于该模型的模型没有帮助(例如,income_line_items模型上的financial_history

有什么想法吗?

1 个答案:

答案 0 :(得分:10)

您是否尝试过使用嵌套哈希来访问子子模型?类似的东西:

@app = Application.includes(:first_submodel, 
                            {:second_submodel => [:first_sub_submodel, :second_sub_submodel]},
                            {:third_submodel  => :third_sub_submodel})