【问题标题】:Rails and Mongoid and duplicate find queriesRails 和 Mongoid 以及重复查找查询
【发布时间】:2012-12-02 15:07:19
【问题描述】:

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

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

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

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

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

这里是整个源代码的 github 链接https://github.com/deiga/new-Roydon/tree/develop

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

      • 当然,我会试试的。它不会解释为什么所有其他发现也重复。我的意思是 Shop::ShoppingCart.find 以及其他所有内容。
      • 如果在 Shop::ControllerController 中的 before_filters 中发生类似的事情,它可能会发生。
      猜你喜欢
      • 1970-01-01
      • 2013-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多