我在rails应用程序中有这种奇怪的行为。所有查找查询都运行了两次。 我已经通过在ap端和DB端记录查询来验证这一点。 我只是在开发模式下测试过它。
我已经在方法中添加了日志,以查看方法是否被多次调用,但事实并非如此。
所有保存只运行一次,因此没有问题。只有页面加载的问题会随着数据库中的数据越多而越来越慢,因为它会查询所有数据两次。
我甚至不知道应该粘贴哪些代码部分,因为我不知道这可能来自何处。
我正在使用mongoid (3.0.13), rails (3.1.3)
答案 0 :(得分:9)
你现在可能已经解决了,但我遇到了同样的问题,原因是bullet
gem,为了测量性能,它会重新运行每个Mongoid查找。
我可以看到你的Gemfile中也包含它,所以很可能就是这样。
答案 1 :(得分:0)
似乎调用Ancestry的Shop::Category::all_products
方法的children
正在创建一个Mongoid选择。同时,当您指定ProductsController
时,您已在includes(:products)
中提取相关产品。
尝试从includes(:products)
的第5行删除ProductsController
,看看是否从该控制器操作中删除了重复项。