Rails和Mongoid以及重复查找查询

时间:2012-12-02 15:07:20

标签: ruby-on-rails-3 mongoid mongoid3

我在rails应用程序中有这种奇怪的行为。所有查找查询都运行了两次。 我已经通过在ap端和DB端记录查询来验证这一点。 我只是在开发模式下测试过它。

我已经在方法中添加了日志,以查看方法是否被多次调用,但事实并非如此。

所有保存只运行一次,因此没有问题。只有页面加载的问题会随着数据库中的数据越多而越来越慢,因为它会查询所有数据两次。

我甚至不知道应该粘贴哪些代码部分,因为我不知道这可能来自何处。

我正在使用mongoid (3.0.13), rails (3.1.3)

以下是整个来源https://github.com/deiga/new-Roydon/tree/develop

的github链接

2 个答案:

答案 0 :(得分:9)

你现在可能已经解决了,但我遇到了同样的问题,原因是bullet gem,为了测量性能,它会重新运行每个Mongoid查找。

我可以看到你的Gemfile中也包含它,所以很可能就是这样。

答案 1 :(得分:0)

似乎调用Ancestry的Shop::Category::all_products方法的children正在创建一个Mongoid选择。同时,当您指定ProductsController时,您已在includes(:products)中提取相关产品。

尝试从includes(:products)的第5行删除ProductsController,看看是否从该控制器操作中删除了重复项。