2017-02-09 64 views
0

我正在使用包含在我的一個查詢上進行熱切加載。我正在試圖查詢發票以獲取總髮票金額。當我使用包括與不當時,我得到2個不同的結果。任何人都可以解釋爲什麼這會發生/如何最好地解決這個問題?Rails包含導致不正確的結果

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

什麼是代碼:total_in_cents? – user3456978

+0

:total_in_cents只是我的發票數據庫表中的一列。我將每張發票的總金額存儲爲給定發票的每行中的美分 –

+0

對不起,我假設您在.Sum之前進行了計算。你是否重用了美分列名中的總數? – user3456978

回答

0

您是從兩個不同的陣列拔毛: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

與您可以通過調整列記錄名稱進行測試,並重新播種數據庫或更好,但過濾掉運行相同的查詢

不與「Invoices'and相關的記錄