【问题标题】:Correctly eager loading empty array being ignored正确急切加载空数组被忽略
【发布时间】:2012-10-09 19:38:37
【问题描述】:

我的vehicle 模型上有一个多对一关系images。我已经设置了一个类似于Vehicle.includes(:images).find(ids) 的查询,因为这些vehicles 没有图像,所以正确地加载了一个空数组。但是,它会返回到 Mongo 服务器,试图找出是否有任何图像。身份映射已启用,所有爵士乐。急切加载似乎适用于非空数组。

我如何向 Mongoid 发出信号表明空数组是正确的,而不是再次尝试加载它们?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid eager-loading


    【解决方案1】:

    从未找到解决此问题的好方法。似乎身份映射不会存储空数组,当我手动将一个空数组填充到 IdentityMap 中时,它按预期工作。

    如果其他人有这个问题,这是我们的解决方法:

    我们确保image 模型中的vehicle_id 上有一个索引,然后在单独的查询中加载所有图像并将它们粘贴到相关的车辆对象中。通过这种方法,我们一次加载的车辆不会超过 25 辆,因此我们从 26 个查询减少到 2 个。

    如果在内存中加载相当数量的元素,可能性能不佳。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-30
      • 1970-01-01
      • 2021-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-13
      • 2012-03-27
      相关资源
      最近更新 更多