Rails 包括导致不正确的结果

Rails includes causing incorrect result

我正在使用包含对我的一个查询进行预先加载。我正在尝试查询发票以获得发票总额。当我使用 include 和不使用 include 时,我得到 2 个不同的结果。谁能解释为什么 happening/how 可以最好地解决这个问题?

all_invoices = Invoice.includes(:contractor, :invoice_items, :refunds).with_user(1).date_between(date_range).search_contractor("tester").displayed_invoices.order(created_at: 'DESC')

tester = Invoice.with_user(1).date_between(date_range).search_contractor("tester").displayed_invoices.order(created_at: 'DESC')

all_invoices.pluck(:total_in_cents).sum  #this will return 80000

tester.pluck(:total_in_cents).sum #this will return 40000

第二个是我正在寻找的正确结果,但显然包含在其中有助于提高速度,所以我不想删除它,但我需要从中获得正确的结果.

有人知道为什么会这样吗?

您正在从两个不同的数组中提取 :total_in_cents

测试人员正在采摘 SELECTED from "invoices"

all_invoices 正在采摘 from SELECTED from "invoices",但也 :contractor, :invoice_items and :refunds 满足与以下条件相同的条件:

.with_user(1).date_between(date_range).search_contractor("tester")

我假设其中一些是填充符,但是 .with_user 查询用户,并且该用户可能有一些其他与 :contractor, :invoice_items or refunds

相关的记录

您可以通过调整列记录名称和 re-seeding 数据库来测试它,或者更好地过滤掉那些与“发票”和 运行 相同查询无关的记录