2017-02-09 16 views
0

Я использую включенные функции, чтобы выполнять загрузку по моему одному запросу. Я пытаюсь запросить счета-фактуры, чтобы получить общую сумму выставленных счетов. Я получаю 2 разных результата, когда я использую include vs., когда я этого не делаю. Может ли кто-нибудь объяснить, почему это происходит/как это лучше всего исправить?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 

2-й один правильный результат того, что я "ищу, но, очевидно, имея включает там полезно для скорости, так что я не пытался удалить его, но мне нужно, чтобы получить правильный результат от него.

Кто-нибудь есть какие-либо идеи, почему это происходит?

+0

Что такое код: total_in_cents? – user3456978

+0

: total_in_cents - это всего лишь столбец в таблице счетов-фактур. Я храню общую сумму каждого счета в виде центов в каждой строке для данного счета. –

+0

Извините, я предположил, что вы делали расчет до .Sum. Вы повторно используете: total in cents имя столбца? – 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 управлением тем же запросом