我的rails应用程序中有这种非常奇怪的行为。所有查找查询都运行双倍。我已经通过在 ap 端和数据库端记录查询来验证这一点。不过,我只在开发模式下对其进行了测试。
我已将日志记录添加到方法中,以查看这些方法是否被多次调用,但事实并非如此。
所有保存只运行一次,因此没有问题。只有页面加载速度越慢的问题,数据库中的数据越多,因为它会两次查询所有数据。
我什至不知道我应该粘贴代码的哪些部分,因为我不知道这可能来自哪里。
我正在使用mongoid (3.0.13), rails (3.1.3)
这是整个源代码 https://github.com/deiga/new-Roydon/tree/develop 的github链接
您现在可能已经解决了它,但我遇到了同样的问题,原因是bullet
宝石,它重新运行每个 Mongoid 发现以衡量性能。
我可以看到您的 Gemfile 中也包含它,所以可能就是这样。
看来调用 Ancestry children
方法的 Shop::Category::all_products
正在创建一个 Mongoid 选择。同时,当您指定includes(:products)
时,您已经在ProductsController
中获取了关联的产品。
尝试从ProductsController
的第 5 行中删除includes(:products)
,看看它是否从该控制器操作中删除了重复项。