2017-02-09 12 views
0

私は1つのクエリでeager loadingを行うためにインクルードを使用しています。私はインボイスを照会して請求総額を取得しようとしています。私が含まれているものを使うときは、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 

第二1が探して何I "mで正しい結果であるが、明らかに持つスピードのために有用があるに含まれるので、私はそれを削除しようとしていないんだけど、私は正しい結果を取得する必要がありますそれから。

誰もがなぜこれが起こっている任意のアイデアを持っている?

+0

次のコードは何ですか:total_in_cents? – user3456978

+0

:total_in_centsは、請求書dbテーブルの列です。私は指定された請求書の各行にセントとして各請求書の総額を保存します –

+0

申し訳ありません。私は前に計算を行っていたと思います。あなたは:セントの列名の合計を再利用しますか? – user3456978

答えて

0

次の2つの異なるアレイから:total_in_centsを摘採されている。

テスターSELECTED from "invoices"

から摘採されます

とall_invoicesは、同じ基準を満たすfrom SELECTED from "invoices"、だけでなく、:contractor, :invoice_items and :refundsを摘採されています。私はこれらのいくつかは、充填剤であると仮定し、それ.with_userがユーザーを照会し、そのユーザは、おそらくいくつかの他のレコードを持ってい

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

同じクエリ

を実行している「Invoices'andに関連付けられていないそれらのレコードをフィルタリング :contractor, :invoice_items or refunds

に関連したあなたは、列のレコード名を調整することで、それをテストすることができ、より良いまだ、データベースを再播種または

関連する問題