我正在使用includes来对我的一个查询进行急切加载。我正在尝试查询发票以获取发票总金额。当我使用包含时,当我不使用时,我得到2个不同的结果。任何人都可以解释为什么会发生这种情况/如何最好地解决这个问题?
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
第二个是我正在寻找的正确结果,但显然包含在那里有助于提高速度,所以我不想删除它,但我需要得到正确的结果从它。
任何人都知道为什么会这样?
答案 0 :(得分:0)
你从两个不同的阵列中挑选:total_in_cents
。
Tester正在从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
您可以通过调整列记录名称,重新播种数据库或更好地过滤掉那些与“发票”相关的记录并运行相同的查询来测试它