MVC:避免在视图中进行大量查询

时间:2013-03-01 15:10:38

标签: ruby-on-rails model-view-controller eager-loading

我实际上是在rails中编程。我有一个复杂的CMS-CRM-Ecommerce应用程序,在视图中生成大量过滤器和查询(每页使用10-15个模型)

例如,对于我的电子商务中的每个产品,我检查其页面,翻译,作者,订单,客户......很多事情。

我真的需要加快计算时间并使日志可读,减少查询数量

这似乎是一个n + 1查询问题,但它对我来说主要是一个设计问题,我无法通过急切加载来解决它。我会试着更好地解释一下。

问题:   - 在多个视图中使用了许多复杂的查询方法:例如“没有写某个类别的其他页面的页面的作者”。范围非常适合这样的查询,但在大量使用时会生成太多查询

思想解决方案:   - 具有预先加载的范围,涵盖整个视图   - 使用先前急切加载的集合在内存中工作的数据过滤方法(例如:“不写某个类别的其他页面的页面的作者”不会作为范围完成,而是作为内存操作完成)

问题是: 我没有灵活性,也有一些耦合。 如果我使用内存方法进行过滤,我总是必须知道我开始使用的集合中包含的内容。如果作者不在我的“可用作者列表”中,或者因为我刚刚从错误的数据集开始,我如何理解?每次调用内存过滤方法时,我都应该查看我的查询定义

0 个答案:

没有答案